我尝试使用预先训练过的VGG16网络进行分类。为此,我编写了如下代码:
from keras.applications.vgg16 import VGG16
from keras.models import Model
from keras.layers import Flatten, Dense, Dropout
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
flat1 = Flatten()(base_model.outputs)
class1 = Dense(1024, activation='relu')(flat1)
drop1 = Dropout(0.5)(class1)
class2 = Dense(512, activation='relu')(drop1)
drop2 = Dropout(0.5)(class2)
class3 = Dense(256, activation='relu')(drop2)
drop3 = Dropout(0.5)(class3)
class4 = Dense(128, activation='relu')(drop3)
drop4 = Dropout(0.5)(class4)
output = Dense(4, activation='softmax')(drop4)
model = Model(inputs=base_model.inputs, outputs=output)
model.summary()
但当我尝试使用以下方法来拟合模型时:
history = model.fit_generator(train_generator, steps_per_epoch=70, epochs=40, validation_data=validation_generator, validation_steps=20, verbose=0)
我犯了这个我无法理解的错误
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
<ipython-input-26-11baa76f8cd2> in <module>()
8 #mc = ModelCheckpoint('vgg16_end_to_end.hdf5', monitor='val_loss', mode='min', save_best_only=True)
9
---> 10 history = model.fit_generator(train_generator, steps_per_epoch=70, epochs=40, validation_data=validation_generator, validation_steps=20, verbose=0)
9 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60 inputs, attrs, num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
InvalidArgumentError: Matrix size-incompatible: In[0]: [1,501760], In[1]: [25088,1024]
[[node dense_8/MatMul (defined at /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:3009) ]] [Op:__inference_keras_scratch_graph_5022]
Function call stack:
keras_scratch_graph
在过去的几天里,我一直在使用这个模型进行训练,模型运行得很好。突然发生了什么事?请帮助你。。。快疯了
目前没有回答
相关问题 更多 >
编程相关推荐