首页 > 解决方案 > 如何在 Keras 中使用 maxPooling 和卷积层修复 ValueError?

问题描述

_input = tf.keras.layers.Input(shape=(512, 384, 3))
conv1 = tf.keras.layers.Conv2D(1024, kernel_size=(512, 384), strides=(32, 32),activation=tf.nn.relu)(_input)
#until here it works fine

maxPooling = tf.keras.layers.MaxPool2D(pool_size=(2, 2))(conv1)
conv2 = tf.keras.layers.Conv2D(128, kernel_size=(64, 48), 
    strides=(16, 12), activation=tf.nn.relu)(maxPooling)
avrePooling = tf.keras.layers.AveragePooling2D(pool_size=(8, 8))(conv2)
conv3 = tf.keras.layers.Conv2D(128, kernel_size=(64, 64),
    strides=(16, 16), activation=tf.nn.relu)(avrePooling)
flatten = tf.keras.layers.Flatten()(conv3)
dense1 = tf.keras.layers.Dense(256, activation=tf.nn.relu)(flatten)
dense2 = tf.keras.layers.Dense(1024, activation=tf.nn.relu)(dense1)
dense3 = tf.keras.layers.Dense(512, activation=tf.nn.relu)(dense2)
dense4 = tf.keras.layers.Dense(256, activation=tf.nn.relu)(dense3)
_output = tf.keras.layers.Dense(trainY.shape[1], activation=tf.nn.relu)(dense4) #trainY.shape[1] = 3

在 conv1 层之后,我收到此错误:

ValueError:由 1 减去 2 导致的负尺寸大小,用于输入形状为 [?,1,1,1024] 的“max_pooling2d/MaxPool”(操作:“MaxPool”)。当我删除该行时,在下一行中再次出现相同的错误。

标签: python-3.xkeras-layer

解决方案


推荐阅读