首页 > 解决方案 > 如何用我自己的权重初始化 Keras 顺序模型中的第二个卷积层?

问题描述

我有一个有两个卷积层的模型。我已经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)

我不明白为什么它没有设置权重?

标签: pythonmachine-learningkerasconv-neural-network

解决方案


正如我在评论部分提到的,一种替代方法是对过滤器中的所有通道使用相同的权重。为此,您可以轻松地重复w28 次的值以获得 shape 数组(3,3,8,6)

w2 = w2.repeat(8,axis=2)
w2.shape
# (3,3,8,6)

推荐阅读