Keras如何处理(?,)输入形状?能够在Cifar10上训练Keras VGG16,尽管输入形状小于最小值

Keras如何处理(?,)输入形状?能够在Cifar10上训练Keras VGG16,尽管输入形状小于最小值,keras,Keras,我对Keras允许我训练我的模型感到非常困惑:我能够加载经过预训练的vgg16模型,将其与GlobalAvgPool和密集层连接起来,最终为CIFAR10输出10个类。然后就能够训练它(相当准确) 但是,当我在VGG16()中显式指定输入_形状时,出现了ValueError,我意识到我的输入图像(批处理,32,32,3)应该无法通过网络,因为有5个MaxPool层,带有2x2过滤器和stride 2 ValueError:输入大小必须至少为48x48;得到'input_shape=(32,32,

我对Keras允许我训练我的模型感到非常困惑:我能够加载经过预训练的vgg16模型,将其与GlobalAvgPool和密集层连接起来,最终为CIFAR10输出10个类。然后就能够训练它(相当准确)

但是,当我在VGG16()中显式指定输入_形状时,出现了ValueError,我意识到我的输入图像(批处理,32,32,3)应该无法通过网络,因为有5个MaxPool层,带有2x2过滤器和stride 2

ValueError:输入大小必须至少为48x48;得到'input_shape=(32,32,3)`
那么,Keras如何处理前一个案例,并且仍然允许继续进行培训

我的代码:

(x_列,y_列),(x_测试,y_测试)=cifar10.负载数据()
批量大小=32
num_类=10
纪元=10
#将类向量转换为二进制类矩阵。
y_列=到_分类(y_列,num_类)
y_测试=to_分类(y_测试,num_类)
x_-train=x_-train.astype('float32')
x_test=x_test.astype('float32')
x_列/=255
x_检验/=255
从keras.applications.vgg16导入vgg16
从keras.models导入模型
从keras.layers导入稠密、全局平均池2D
从keras.optimizers导入Adam#rmsprop
从keras导入后端为K
从keras.callbacks导入模型检查点
def ourModel():
'''
返回直到模型(输入=,输出=)和冻结层步骤的模型。
优化器和编译器将分别定义。
'''
#创建基础预训练模型
基本模型=VGG16(权重='imagenet',包括顶部=假)
#添加全局空间平均池层
x=基本模型输出
x=全局平均池2D()(x)
#让我们添加一个完全连接的层
x=密集(512,激活='relu')(x)
#还有一个逻辑层——假设我们有“num_类”的类
预测=密集(num_类,activation='softmax')(x)
#这是我们将要训练的模型
模型=模型(输入=基本模型。输入,输出=预测)
#第一:只训练顶层(随机初始化)
#即冻结所有卷积层
对于基本模型层中的层:
layer.trainable=错误
回归模型