【发布时间】:2019-09-04 15:37:56
【问题描述】:
我使用 3-VGG 块将图像分类为两类,例如狗和猫,我能够做到。但是当我尝试使用相同的方法对 3 个类(例如狗、猫和熊猫)进行分类时,我得到了 valuerror。我怀疑我需要更新密集层代码,但无法找到确切的问题。请帮助我知道我在这里缺少什么。
我正在使用 Python 3.7 和 Keras 进行此分类。
def define_model():
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same',
input_shape=(200, 200, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(1, activation='sigmoid'))
# compile model
opt = SGD(lr=0.001, momentum=0.9)
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
return model
# run the test harness for evaluating a model
def run_test_harness():
# define model
model = define_model()
# create data generator
datagen = ImageDataGenerator(rescale=1.0 / 255.0)
# prepare iterators
train_it = datagen.flow_from_directory('D:/Proect/images/',
class_mode='categorical', batch_size=64, target_size=(200, 200))
label_map = train_it.class_indices
print("label_map: ", label_map)
# fit model
model.fit_generator(train_it, steps_per_epoch=len(train_it), epochs=20, verbose=0)
# save model
model.save('my_model.h5')
我收到以下错误-
"在第 41 行,在 run_test_harness model.fit_generator(train_it,steps_per_epoch=len(train_it),epochs=20,verbose=0) ValueError:检查目标时出错:预期 dense_2 的形状为 (1,),但数组的形状为 (3,)"
【问题讨论】:
标签: python-3.x keras