我非常对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看起来是一个很棒的工具,但到目前为止我完全无法使用它。
P.S。我使用的是Keras 1.1.0和Tensorflow 0.10。
答案 0 :(得分:2)
'image_dim_ordering':'tf'将输入的第三个维度设置为2D卷积的通道输入:即您当前放置了一个带有27个通道的1x27输入,以便与3x3内核进行卷积且无填充。 / p>
您应该能够将'image_dim_ordering'切换为'th'并立即使用此代码。我认为'th'曾经是默认的,你不幸遇到了一个过时的教程。这是来自Convolution2D的Keras文档 - 它在那里,但不是特别突出:
dim_ordering:'th'或'tf'。在'th'模式中,通道尺寸(深度)位于索引1处,'tf'模式位于索引3处。它默认为在〜/ .keras / keras.json的Keras配置文件中找到的image_dim_ordering值。如果你从未设置它,那么它将是“tf”。
希望有所帮助!
答案 1 :(得分:0)
试试这个
digit_input = Input(shape=(27, 27, 1))
x = Convolution2D(64, 3, 3, dim_ordering='tf')(digit_input)