TensorFlow密集层:1个三维权重?

时间:2019-04-19 06:18:32

标签: python tensorflow keras tensorflow2.0

我以以下方式建立了我的网络:

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,)?

1 个答案:

答案 0 :(得分:1)

(784, 128)(128, 10)是最后两层 weights (128,)(10,)是最后两层 bias 。如果不需要偏差,则可以使用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)