python - keras model.get_weight 未返回预期尺寸的结果

标签 python tensorflow keras deep-learning keras-layer

我正在使用 keras 对 mnist 数据集进行分类。我有兴趣对训练后生成的权重矩阵进行一些操作,但某些层权重矩阵看起来没有完全连接。

model = Sequential()
model.add(Dense(1000, input_shape = (train_x.shape[1],), activation='relu' ))
model.add(Dense(1000, activation='relu'))
model.add(Dense(500, activation='relu'))
model.add(Dense(200, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics = ['accuracy'])
model.fit(train_x,train_y, epochs=10, validation_data= (test_x,test_y))

w = model.get_weights()

for i in range(5):
        print(w[i].shape)

现在,当我打印每层权重矩阵的尺寸时,我得到以下结果

(784, 1000)
(1000,)
(1000, 1000)
(1000,)
(1000, 500)

为什么第二个是 (1000,) 而不是 (1000,1000)?

最佳答案

因为这是偏见。不要忘记该层是由 enter image description here 定义的(有时也写为 enter image description here )。

假设x的形状为(None, 784),权重w的形状为(784, 1000) matmul(x, w) 运算产生形状 (None, 1000)。对于此形状的结果张量,您将添加形状 (1000, ) 的偏差,该偏差沿 None 维度广播。

关于python - keras model.get_weight 未返回预期尺寸的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55561540/

相关文章:

python - lstm预测结果延迟现象

object - 如何在没有 nms 的情况下从 Tensorflow 对象检测 ssd-mobilenet 解码 raw_outputs/box_encodings

python - 加权稀疏分类交叉熵

python - 多索引数据框到具有新列的数据透视表

python - 如何在每个单元测试中重置fixture的某些属性?

python - 使用 WSGIAuthUserScript 时如何设置 python 路径?

python - 为什么我会收到此图表已断开连接的错误?

python - 在Python中动态设置继承

tensorflow - 如何在 TensorFlow 的多 GPU 设置中使用批量归一化?

python - 属性错误 : 'Tensor' object has no attribute '_keras_shape'