TensorFlow 密集层:一维权重?
TensorFlow Dense Layers: 1 dimentional weights?
我的网络设置如下:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
我希望这个配置是这样的:
[784 neurons]
(784,128 weights)
[128 neurons]
(128,10 weights)
[10 neurons]
但是,当我使用 model.get_weights() 打印网络的权重时,它会产生以下输出:
for w in model.get_weights():
print(w.shape,"\n")
(784, 128)
(128,)
(128, 10)
(10,)
为什么这个模型中存在 (128,) 和 (10,)?
(784, 128)
和(128, 10)
是最后两层权重。 (128,)
和 (10,)
是最后两层 biases。如果不需要biases,可以使用use_bias
参数设置。例如:
import keras
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, use_bias=False,activation='relu'),
keras.layers.Dense(10, use_bias=False,activation='softmax')
])
for w in model.get_weights():
print(w.shape,"\n")
# print
(784, 128)
(128, 10)
我的网络设置如下:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
我希望这个配置是这样的:
[784 neurons]
(784,128 weights)
[128 neurons]
(128,10 weights)
[10 neurons]
但是,当我使用 model.get_weights() 打印网络的权重时,它会产生以下输出:
for w in model.get_weights():
print(w.shape,"\n")
(784, 128)
(128,)
(128, 10)
(10,)
为什么这个模型中存在 (128,) 和 (10,)?
(784, 128)
和(128, 10)
是最后两层权重。 (128,)
和 (10,)
是最后两层 biases。如果不需要biases,可以使用use_bias
参数设置。例如:
import keras
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, use_bias=False,activation='relu'),
keras.layers.Dense(10, use_bias=False,activation='softmax')
])
for w in model.get_weights():
print(w.shape,"\n")
# print
(784, 128)
(128, 10)