keras model.get_weight未返回预期维度的结果

问题描述 投票:2回答:1

我正在使用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)?

python tensorflow keras deep-learning keras-layer
1个回答
3
投票

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

假设x的形状是(None, 784),重量w的形状是(784, 1000)matmul(x, w)操作导致形状(None, 1000)。对于这种形状的结果张量,你增加了沿着(1000, )维度广播的形状None的偏见。

© www.soinside.com 2019 - 2024. All rights reserved.