python - 如何用我自己的权重初始化 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)
我不明白为什么它没有设置权重?
解决方案
正如我在评论部分提到的,一种替代方法是对过滤器中的所有通道使用相同的权重。为此,您可以轻松地重复w2
8 次的值以获得 shape 数组(3,3,8,6)
:
w2 = w2.repeat(8,axis=2)
w2.shape
# (3,3,8,6)
推荐阅读
- php - 如何使用 PHP codeigniter 以编程方式生成带有我公司徽标的 PDF
- reactjs - ReactJs 仅通过映射一组 URL 来渲染一个 img 元素
- reactjs - 在 react-table v7 中以编程方式对行进行分组
- java - Spring Boot 应用程序代理身份验证 407
- python - 我想获得一个网站的完整 html 代码,特别是使用 python 的“The North Face”并且使用 requests 并没有给我整个 html 代码
- digital-ocean - 代码服务器 WebSocket 关闭,状态码为 1006
- javascript - 多维数组JS片段
- firebase - firebase 实时数据库规则以允许多个 uid 进行写访问
- discord.js - 不和谐.js | guild.owner.send() 不工作
- apache-spark - PySpark 使用 s3a 抛出 java.lang.IllegalArgumentException