我有一个具有两个卷积层的模型。我已经成功为conv_1
层设置了新的权重,但是在设置conv_2
层的权重时却收到错误消息:
model.add(Conv2D(8, (3, 3), input_shape=(28,28,1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(6, (3, 3), input_shape=(26,26,1), activation='relu'))
model.layers[0].set_weights(w1)
model.layers[2].set_weights(w2)
在这里w1.shape == (3, 3, 1, 8)
和w2.shape == (3, 3, 1, 6)
。错误消息是:
ValueError: Layer weight shape (3, 3, 8, 6) not compatible with provided weight shape (3, 3, 1, 6)
我不明白为什么不设置权重?
答案 0 :(得分:0)
正如我在评论部分中提到的,一种替代方法是对过滤器中的所有通道使用相同的权重。为此,您可以轻松地将w2
的值重复八次以得到形状为(3,3,8,6)
的数组:
w2 = w2.repeat(8,axis=2)
w2.shape
# (3,3,8,6)