我正试图建立一个预测面部表情的模型。我使用的模型:链接。
我调整了数据,使它有三个文件夹:培训,测试,验证。每个文件夹包含三个子文件夹,名为:失望、感兴趣、中立。
我就是这样运行代码的。
image_gen=ImageDataGenerator(rotation_range=30,
width_shift_range=0.1,
height_shift_range=0.1,
rescale=1/255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
train_image_gen=image_gen.flow_from_directory(train_dir,
batch_size=batch_size,
class_mode='categorical') #implemented the same code for test and validation dirs.这就是模型本身:
model.add(Conv2D(32, kernel_size=(3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size = (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size = (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation="softmax"))
model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.Adam(lr=0.001),
metrics=['accuracy'])
model.fit(train_image_gen,epochs=1,steps_per_epoch= nb_train_samples/16,
validation_data=valid_image_gen,validation_steps=nb_valid_samples//16)当我运行model.fit时,它会给出以下错误
InvalidArgumentError: logits and labels must be broadcastable: logits_size=[400,3] labels_size=[16,3]
[[node categorical_crossentropy/softmax_cross_entropy_with_logits
(defined at /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/keras/backend.py:5009)
]] [Op:__inference_train_function_7946]
Errors may have originated from an input operation.
Input Source operations connected to node categorical_crossentropy/softmax_cross_entropy_with_logits:
In[0] categorical_crossentropy/softmax_cross_entropy_with_logits/Reshape:
In[1] categorical_crossentropy/softmax_cross_entropy_with_logits/Reshape_1:
Operation defined at: (most recent call last)
>>> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 193, in _run_module_as_main
>>> return _run_code(code, main_globals, None,
>>>
>>> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/runpy.py", line 86, in _run_code
>>> exec(code, run_globals)
>>>
>>> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel_launcher.py", line 16, in <module>
>>> app.launch_new_instance()
>>>
>>> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/traitlets/config/application.py", line 846, in launch_instance
>>> app.start()
>>>
>>> File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/ipykernel/kernelapp.py", line 677, in start
>>> self.io_loop.start()我尝试了许多不同的方法和代码,但我一直有相同的错误。
发布于 2021-12-22 14:55:07
要获得有关错误的更多信息,可以在热切模式下运行:
model.compile(loss='categorical_crossentropy',
optimizer=keras.optimizers.Adam(lr=0.001),
metrics=['accuracy'], run_eagerly=True)实际上,输入形状有一个错误,实际上应该是256, 256, 3。
https://stackoverflow.com/questions/70448690
复制相似问题