输入形状为[?,1,10000,80],[3,3,80,16]的'conv2d_1 / convolution'(op:'Conv2D')从1中减去3引起的负尺寸大小

时间:2019-12-28 21:11:29

标签: python tensorflow keras

我正在使用Keras 2.3.1和TensorFlow 2.0.0。

我在网络中第一个卷积层的实例化上引起了名义错误:

model = Sequential([
    Conv2D(16, 3, input_shape=(1, 10000, 80)),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Conv2D(16, 3),
    LeakyReLU(alpha=0.01),
    MaxPooling2D(pool_size=3),
    Dense(256),
    LeakyReLU(alpha=0.01),
    Dense(32),
    LeakyReLU(alpha=0.01),
    Dense(1, activation='sigmoid')])

据我所知,TF维度的顺序应设置为(样本,行,列)。我的输入是一个形状为1000、80的数组。

我已经尝试了所有在线发现的修复程序,包括:

K.common.set_image_dim_ordering('tf')
K.set_image_data_format('channels_last')
K.tensorflow_backend.set_image_dim_ordering('tf')
K.set_image_dim_ordering('tf')

但是,所有这些都不改变任何内容(例如前两个),或者在那些行上失败(后两个)。

1 个答案:

答案 0 :(得分:3)

如果input_shape错误,则所有修补程序均无效。 input_shape层的Conv2D应该为(width, height, channels),不包含样本尺寸,因为Keras隐式插入了该尺寸。

您给出的input_shape的宽度将被解释为一个,这是一个问题。您需要正确设置input_shape的格式,并添加渠道尺寸。