使用KERAS VGG16 - 故障输出形状



我正在尝试从头开始训练vgg16型号(来自keras.applications),而我得到了一个奇怪的错误

x_train形状为(73257,48,48,3)

y_train形状为(73257,10)

我不知道发生了什么...我认为这与Conv层有关,但是由于我直接从Keras进口了该模型,因此我在弄清楚我出错的地方有问题。p>我的数据集由具有(48,48,3)形状的73,257张图像组成。我本质上是在尝试进行角色识别(想想mnist风味),但我会通过模型(将重量设置为0)喂食。

model = keras.applications.vgg16.VGG16(include_top=False,
                                       weights=None,
                                       input_shape=(48, 48, 3),
                                       input_tensor=None, pooling='avg', classes=10)
sgd = SGD(lr=.1)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])
print('X_train shape is {}'.format(X_train.shape))
print('Y_train shape is {}'.format(y_train.shape))
model.fit(X_train, y_train,
          epochs=20,
          batch_size=128)
score = model.evaluate(X_test, y_test, batch_size=128)

这是我遇到的错误

文件"/home/codebrotherone/pycharmprojects/Computer Vision/deep_neural/dnn.py",第169行,在VGG16中 batch_size = 128)

file"/home/codebrotherone/anaconda2/envs/tensorflow/lib/python3.4/site-packages/keras/keras/engine/training.py.py",第1574行, batch_size = batch_size)

file"/home/codebrotherone/anaconda2/envs/tensorflow/lib/python3.4/site-packages/keras/keras/engine/training.py.py",第1411行 exception_prefix ='target')

file"/home/codebrotherone/anaconda2/envs/tensorflow/lib/python3.4/site-packages/keras/keras/engine/training.py.py",第141行 str(array.hape))

valueerror:检查目标时错误:预期block5_pool具有4个维度,但具有形状的数组(73257,10)

理想情况下,对于分类问题,您应该有include_top=Trueclasses=10

这已经足够了。由于您不包括顶部,并且正在使用全球池,因此您应该得到类似(73257,512)之类的东西。但是,您收到的信息表明您在此尝试中没有使用池。有些东西不太匹配。

无论如何,请继续:

model = keras.applications.vgg16.VGG16(include_top=True,
                                   input_shape=(48, 48, 3),
                                   classes=10)

最新更新