【问题标题】:Keras convolution filter size issueKeras卷积滤波器大小问题
【发布时间】:2016-10-04 04:39:51
【问题描述】:

我是非常 Keras 新手,在我早期的实验中,我在创建卷积层时遇到了一个错误。当我运行这段代码时(找到here;“共享视觉模型”部分)

from keras.models import *
from keras.layers import *
from keras.layers.convolutional import *
from keras.layers.pooling import *

digit_input = Input(shape=(1, 27, 27))
x = Convolution2D(64, 3, 3)(digit_input)
x = MaxPooling2D((2, 2))(x)

mdl = Model(digit_input, x)

我收到以下错误(回溯指向 Convolution2D 线):

ValueError: Filter must not be larger than the input: Filter: (3, 3) Input: (1, 27)

我假设我滥用了界面——尤其是因为似乎没有其他人有这个特殊的问题——但我直接从 Keras 文档中提取了代码。当我使用 model.add() 语法时,问题仍然存在。有趣的是,当我将过滤器大小缩小到 1x1 或将输入通道数增加到 3 时,错误就消失了。我尝试为卷积手动设置dim_ordering='tf',我的 keras.json 文件显示:

{
"image_dim_ordering": "tf",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "tensorflow"
}

Keras 看起来是一个很棒的工具,但到目前为止我完全无法使用它。

附:我正在使用 Keras 1.1.0 和 Tensorflow 0.10。

【问题讨论】:

    标签: python neural-network tensorflow convolution keras


    【解决方案1】:

    'image_dim_ordering' : 'tf' 将输入的第三维设置为 2D 卷积的通道输入:即您当前已将 27 个通道的 1x27 输入与 3x3 内核进行卷积,并且没有填充。

    您应该能够将 'image_dim_ordering' 切换为 'th' 并让此代码立即工作。我认为“th”曾经是默认值,不幸的是,您遇到了一个过时的教程。这是来自Convolution2D 的 Keras 文档 - 它在那里但不是特别突出:

    dim_ordering: 'th' 或 'tf'。在“th”模式下,通道维度(深度)位于索引 1,在“tf”模式下,它位于索引 3。它默认为在 ~/.keras/keras.json 的 Keras 配置文件中找到的 image_dim_ordering 值.如果您从未设置它,那么它将是“tf”。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      试试这个

      digit_input = Input(shape=(27, 27, 1))
      x = Convolution2D(64, 3, 3, dim_ordering='tf')(digit_input)
      

      【讨论】:

        猜你喜欢
        • 2019-11-24
        • 1970-01-01
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 2021-01-03
        相关资源
        最近更新 更多