【问题标题】:ValueError: Negative dimension size caused by subtracting 12 from 1 for 'max_pooling2d_1/MaxPool' (op: 'MaxPool') with input shapes: [?,1,1,64]ValueError:负尺寸大小是由 1 减去 12 导致的,输入形状为“max_pooling2d_1/MaxPool”(操作:“MaxPool”):[?,1,1,64]
【发布时间】:2020-11-08 13:51:29
【问题描述】:

我使用 Keras 和 Tensorflow 作为后端,这里是我的代码:

K.clear_session()
model=Sequential()
model.add(layers.Conv2D(32,(3,3),padding='same',input_shape=(49,43,1),activation='relu'))
model.add(layers.Conv2D(64,(3,3),activation='relu'))


model.add(layers.MaxPool2D(pool_size=(8,8)))
model.add(layers.Conv2D(32,(3,3),padding='same',activation='relu'))
model.add(layers.Conv2D(64,(3,3),activation='relu'))

model.add(layers.MaxPool2D(pool_size=(8,8)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(layers.Dense(256,activation='relu'))
model.add(layers.Dense(4,activation='softmax'))

【问题讨论】:

    标签: python machine-learning keras deep-learning conv-neural-network


    【解决方案1】:

    当我运行您的代码时,我会得到不同的输出 - 不同的数字:

    ValueError: '{{node max_pooling2d_1/MaxPool}} = MaxPoolT=DT_FLOAT, data_format="NHWC", ksize=[1, 8, 8, 1], padding=" 从 3 中减去 8 导致的负维度大小VALID", strides=[1, 8, 8, 1]' 输入形状:[?,3,3,64]。

    您的输入太小,无法遍历所有层。我在下面的代码中添加了每一层的输出。当它到达第二个 MaxPool 层时,它已经太小了,不能被 8 整除。

    model=Sequential()
    model.add(layers.Conv2D(32,(3,3),padding='same',input_shape=(49,43,1),activation='relu'))
    # Output: (49, 43, 32)
    model.add(layers.Conv2D(64,(3,3),activation='relu'))
    # Output: (47, 41, 64)
    
    model.add(layers.MaxPool2D(pool_size=(8,8)))
    # Output: (5, 5, 64))
    
    model.add(layers.Conv2D(32,(3,3),padding='same',activation='relu'))
    # Output: (5, 5, 32)
    model.add(layers.Conv2D(64,(3,3),activation='relu'))
    # Output: (3, 3, 64)
    model.add(layers.MaxPool2D(pool_size=(8,8)))
    # Output: How can I divide 3 by 8???
    
    model.add(Activation('relu'))
    model.add(Flatten())
    model.add(layers.Dense(256,activation='relu'))
    model.add(layers.Dense(4,activation='softmax'))
    

    有很多关于计算层输出的问题和博客文章。

    所以要么增加输入,要么删除模型中的一些层。

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2020-04-23
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      相关资源
      最近更新 更多