【发布时间】:2021-05-25 13:23:21
【问题描述】:
我正在尝试使用 Keras 来处理图像分类器,但我不断收到错误消息:
InvalidArgumentError:logits 和标签必须是可广播的: logits_size=[32,4] labels_size=[32,2] [[节点 categorical_crossentropy/softmax_cross_entropy_with_logits(定义于 :2) ]] [操作:__inference_train_function_10520]
函数调用栈:train_function
我正在创建这样的模型:
base_model = ResNet50(include_top=False, weights='imagenet')
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(4, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])
data_folder = os.path.join("data", "train_min")
test_folder = os.path.join("data", "test_min")
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory(data_folder,
target_size = (224, 224),
batch_size = 32,
class_mode = 'categorical')
test_set = test_datagen.flow_from_directory(test_folder,
target_size = (224, 224),
batch_size = 32,
class_mode = 'categorical')
创建 training_set 和 test_set 后,我收到消息
找到属于 2 个类别的 3520 张图片。 (training_set)
找到属于 2 个类别的 480 张图片。 (test_set)
所以加载图像工作正常,我猜。
但是当我尝试执行这段代码时:
model.fit_generator(training_set,
steps_per_epoch = 8000,
epochs = 5,
validation_data = test_set,
validation_steps = 200)
我收到了上面已经向您展示过的错误:
InvalidArgumentError:logits 和标签必须是可广播的: logits_size=[32,4] labels_size=[32,2] [[节点 categorical_crossentropy/softmax_cross_entropy_with_logits(定义于 :2) ]] [操作:__inference_train_function_10520]
函数调用栈:train_function
如何更改标签大小?当我创建训练集时,标签不是自动完成的吗?什么是 logits?
【问题讨论】:
-
您的最后一层应该与您拥有的类别数相匹配
标签: python keras image-classification