gpt4 book ai didi

keras - 如何从 keras 中的 Conv2D 正确获取层权重?

转载 作者:行者123 更新时间:2023-12-04 01:58:37 25 4
gpt4 key购买 nike

我有 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 x 160,图像为 1 个 channel 。
我试图从这个卷积层可视化权重,但不确定如何获得它们。
这是我现在的做法:

1.打电话
layer.get_weights()[0]

这将返回一个形状数组 (5, 5, 1, 96)。 1 是因为图像是 1 channel 。

2.Take 5 by 5 过滤器
layer.get_weights()[0][:,:,:,j][:,:,0]

非常丑陋,但我不知道如何简化这一点,非常感谢任何评论。

我不确定在这些 5 x 5 的方格中。它们真的是过滤器吗?
如果没有,请告诉我如何正确地从模型中获取过滤器?

最佳答案

我试着像这样只显示前 25 个权重。我有同样的问题,你做的是这是过滤器还是其他东西。它似乎与源自深度信念网络或堆叠 RBM 的过滤器不同。

这是未经训练的可视化权重:untrained weights

这是训练好的权重:

trained weights

奇怪的是训练后没有任何变化!如果你比较它们,它们是相同的。

然后 DBN RBM 在顶部过滤第 1 层,在底部过滤第 2 层:
DBM RBM filters

如果我设置 kernel_intialization="ones",那么我得到的过滤器看起来不错,但经过​​多次反复试验,净损失永远不会减少:
enter image description here

这是显示 2D Conv Weights/Filters 的代码。

  ann = Sequential()
x = Conv2D(filters=64,kernel_size=(5,5),input_shape=(32,32,3))
ann.add(x)
ann.add(Activation("relu"))

...
  x1w = x.get_weights()[0][:,:,0,:]
for i in range(1,26):
plt.subplot(5,5,i)
plt.imshow(x1w[:,:,i],interpolation="nearest",cmap="gray")
plt.show()

ann.fit(Xtrain, ytrain_indicator, epochs=5, batch_size=32)

x1w = x.get_weights()[0][:,:,0,:]
for i in range(1,26):
plt.subplot(5,5,i)
plt.imshow(x1w[:,:,i],interpolation="nearest",cmap="gray")
plt.show()

- - - - - - - - - - - - - -更新 - - - - - - - - - - - ——

所以我再次尝试使用 0.01 而不是 1e-6 的学习率,并通过将图像除以 255.0 使用在 0 和 1 之间而不是 0 和 255 之间标准化的图像。现在卷积滤波器正在改变,第一个卷积滤波器的输出看起来像这样:
Untrained Weights

您会注意到经过训练的过滤器以合理的学习率变化(变化不大): Trained Convolution Filter

这是 CIFAR-10 测试集的图像七: Image 7 CIFAR-10 Car

这是第一个卷积层的输出:
Convolution Layer Output

如果我采用最后一个卷积层(中间没有密集层)并将其提供给未经训练的分类器,它类似于在准确度方面对原始图像进行分类,但是如果我训练卷积层,最后一个卷积层输出会提高分类器的准确度分类器(随机森林)。

所以我会得出结论,卷积层确实是过滤器和权重。

关于keras - 如何从 keras 中的 Conv2D 正确获取层权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com