我已经Conv2D层定义为:
如何在keras中正确地从Conv2D获取图层权重?
Conv2D(96, kernel_size=(5, 5),
activation='relu',
input_shape=(image_rows, image_cols, 1),
kernel_initializer=initializers.glorot_normal(seed),
bias_initializer=initializers.glorot_uniform(seed),
padding='same',
name='conv_1')
这是我的网络中的第一层。
输入尺寸64乘160,图片为1个通道。
我想从这个卷积图层中看到权重,但不知道如何获得它们。
这里是我现在如何这样做:
1.Call
layer.get_weights()[0]
这returs形状的阵列(5,5,1,96)。 1是因为图像是1通道。
2.Take 5×5个滤波器由
layer.get_weights()[0][:,:,:,j][:,:,0]
非常难看,但我不知道如何简化这一点,任何意见都非常赞赏。
我不确定这些5乘5格。他们真的过滤吗?
如果没有人可以请告诉如何正确地从模型中抓取过滤器?
感谢您的回答!这是一个非常奇怪的事情:在随机初始化的情况下权重是相似的。我正在使用为conv层推荐的glorot初始化。对我来说最困惑的问题是:我们正在训练网络,但体重相同。我们训练了什么?对此没有回答... –
那么权重的第三维是什么?在'x1w = x.get_weights()[0] [:,:,0,:]'中,'[:,:,0,:]'中的0。我认为前两个变暗是内核x和y,最后一个是内核的数量 - 但我不知道第三维是什么。它似乎是前一层输出的维度,但我不明白为什么或者什么是真正意义。 – wordsforthewise
0是红色通道。三个维度是红色绿色和蓝色。第一个是x第二个是y第三个是通道,最后是第n个卷积层。 – John