- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据我的理解,2D 卷积将 N 个滤波器应用于输入图像,产生 N 个新的“图像”(=特征图)。
如果我们忽略步幅/子采样,则 32x32 图像经过 N 个 channel 的 2D 卷积后将变为 Nx32x32 张量:
然而,在 Keras 中,32x32 输入会产生 32xN 输出。那么,我的问题是,如何应用降维?这一步是否还涉及另一个隐藏层?
如果是这样,网络是否会失去查看图像原样的能力 - 即 2D 实体?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
这段代码可以重现我的上述主张:
inputs = Input(shape=(1, 32, 32,))
shared = Convolution2D(nb_filter=10, nb_row=8, nb_col=8, subsample=(1, 1), border_mode='same', activation='relu')(inputs)
print("1 => ", inputs.shape)
print("2 => ", shared.shape)
当我们将 10 个滤镜 (==N) 应用于 32x32 灰度图像时,它会产生结果
1 => (?, 1, 32, 32)
2 => (?, 1, 32, 10)
哪里?是未指定的批量大小,1 是输入 channel 的数量(RGB 为 3,灰度为 1)。
正如预期的那样,输入的形状为 32x32。但是,卷积的输出具有 32xN 维度,而不是 32x32xN
最佳答案
可能是因为输入格式顺序的原因。
来自 Keras 文档 Conv2D 采用此参数
data_format: A string, one of channels_last (default) or channels_first. The ordering of the dimensions in the inputs. channels_last corresponds to inputs with shape (batch, height, width, channels) while channels_first corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".
所以你的 (1, 32, 32) 实际上是一个具有 32 个 channel 的 1x32 图像。切换到 (32, 32, 1) 或将 data_format 参数设置为 channels_first
。
有关更改默认行为的更多信息:https://keras.io/backend/您可以使用 keras.backend.image_data_format()
获取设置,并使用 set_image_data_format(data_format)
设置 channels_first
或 channels_last
.
之所以有此设置,是因为 Theano 和 TF 处理维度排序的方式不同,并且取决于您使用的支持。
关于tensorflow - Keras 2DConvolution 产生不合逻辑的输出张量 - 32x32 图像变成 32xN 特征图,而不是 32x32xN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117135/
CSS: .banner:nth-of-type(1) {background-color:red;} .banner:nth-of-type(2) {background-color:blue;}
在处理 vector.size() aka size_type 时,我需要一些帮助来澄清这个奇怪的比较 vector rebuiltFaces; int rebuildIndex = 1; cout
我认为我在 Java 类 AccessToken 中的 IBM Social Business Toolkit SDK 的方法中发现了错误。有方法 isExpired(int Threshold) 问
我是一名优秀的程序员,十分优秀!