我正在尝试从头开始训练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=True
和classes=10
。
这已经足够了。由于您不包括顶部,并且正在使用全球池,因此您应该得到类似(73257,512)之类的东西。但是,您收到的信息表明您在此尝试中没有使用池。有些东西不太匹配。
无论如何,请继续:
model = keras.applications.vgg16.VGG16(include_top=True,
input_shape=(48, 48, 3),
classes=10)