Keras卷积滤波器大小问题

hfwmuf9z  于 2022-11-13  发布在  其他
关注(0)|答案(3)|浏览(153)

我是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。

4nkexdtk

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”。
希望这对你有帮助!

eqfvzcg8

eqfvzcg82#

试试这个

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

j91ykkif3#

这是一个通道的第一个最后的问题。默认是通道最后,如果你的图像将在形状(27,27,1)它将工作。

digit_input = Input(shape=(27, 27, 1))
x = Convolution2D(64, 3, 3)(digit_input)  
x = MaxPooling2D((2, 2))(x)
mdl = Model(digit_input, x)
mdl.summary()

您将获得:

Model: "model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_3 (InputLayer)         [(None, 27, 27, 1)]       0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 9, 9, 64)          640       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 4, 4, 64)          0         
=================================================================
Total params: 640
Trainable params: 640
Non-trainable params: 0

相关问题