【发布时间】:2018-07-29 22:47:27
【问题描述】:
我正在尝试使用带有 Tensorflow 后端的 keras 构建一个模型来预测图片中是否包含文本。
这是我的模特:
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(image_size, image_size, 3))) # 32?
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5)) # 0.5?
model.add(Conv2D(32, (3, 3))) # again, 32?
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5)) # again, 0.5?
model.add(Conv2D(64, (3, 3))) # again, 64?
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5)) # again, 0.5?
model.add(Flatten())
model.add(Dense(96))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1)) # binary
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
我尝试了 128、256、384 的图像尺寸。 我用 9000 张图像训练它,4500 张猫 1 和 4500 猫 2。 训练准确率高达 0.90。 但是当我加载模型并使用它来预测我没有训练过的两个类别的图像类别时,它总是给出0分。
任何想法为什么会发生这种情况?
附言cat 1 是带文字的图片,cat 2 是不带文字的图片。
这也是我测试模型的代码:
model = load_model(model_path)
test_data_generator = ImageDataGenerator(rescale=1. / 255)
test_generator = test_data_generator.flow_from_directory(
test_data_dir,
target_size=(image_size, image_size),
batch_size=batch_size,
class_mode=None,
shuffle=False)
prediction = model.predict_generator(
test_generator,
use_multiprocessing=True,
verbose=1) # verbose=1 makes it show a progress bar.
dst = []
for pred in prediction:
if int(round(pred)) == 0:
dst += [0]
else:
dst += [1]
dst 都是 0。
【问题讨论】:
标签: keras classification