我是Keras的新手,在我早期的实验中,当我创建卷积层时,我遇到了一个错误。“共享愿景模型”部分)
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)
我得到以下错误(回溯指向Convolution 2D线):
ValueError: Filter must not be larger than the input: Filter: (3, 3) Input: (1, 27)
我本以为是我误用了这个接口--特别是因为其他人似乎都没有这个问题--但是我直接从Keras文档中提取了代码。当我使用model.add()
语法时,这个问题仍然存在。有趣的是,当我将过滤器大小缩小到1x 1或将输入通道数增加到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。
3条答案
按热度按时间4nkexdtk1#
“图像尺寸排序”:“tf”将输入的第三维设置为2D卷积的通道输入:即,您当前已将带有27个通道的1x 27输入与3x 3内核进行卷积,且无填充。
您应该可以将'image_dim_ordering'切换为'th',这样代码就可以立即工作了。我想'th'曾经是默认值,不幸的是您遇到了一个过时的教程。下面是Convolution2D中的Keras文档-它在那里,但不是特别突出:
尺寸排序:“th”或“tf”。在“th”模式下,通道维度(深度)位于索引1处,在“tf”模式下,通道维度位于索引3处。默认值为在Keras配置文件~/. keras/keras.json中找到的image_dim_ordering值。如果您从未设置过该值,则它将为“tf”。
希望这对你有帮助!
eqfvzcg82#
试试这个
j91ykkif3#
这是一个通道的第一个最后的问题。默认是通道最后,如果你的图像将在形状(27,27,1)它将工作。
您将获得: