矩阵大小不兼容:在[0]:[1501760],在[1]:[250881024]

2024-05-13 09:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用预先训练过的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

在过去的几天里,我一直在使用这个模型进行训练,模型运行得很好。突然发生了什么事?请帮助你。。。快疯了


Tags: namefromimportmodelstepsoutputsgeneratoractivation