我使用 keras
构建了一个 CNN,并将权重保存在 *.hdf 文件中。我使用了 16
过滤器,内核的大小是 3×3
。
但是第一个 Convolution2D
的 save_weight
输出仅为 1×16
。内核的大小是3×3
,所以输出应该是3×3×16
,不是吗?为什么输出会这样?
这是*.hdf文件结构的截图:
最佳答案
你是对的:如果你使用大小为 3x3
的 16
过滤器,你将看到 16x3x6
权重。当我打开来自 here 的 VGG16
网络的 *.h5
文件时使用免费的 HDFView
工具,卷积具有以下权重:
32-bit floating-point, 64 x 3 x 3 x 3
32-bit floating-point 64
对于这一层
Convolution2D(64, 3, 3, activation='relu')
因此,我认为您使用的 HDF Explorer
有误(这就是我要求提供更多屏幕截图的原因)。请尝试在引用的要点中打开网络文件,并使用您的工具检查是否看到具有相同尺寸的权重。
关于python - 为什么来自keras的CNN权重只是一维的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056532/