【发布时间】:2019-07-09 06:59:23
【问题描述】:
我正在研究多标签图像分类,我使用初始网络作为我的基础架构。 在我得到完整的训练之后,训练准确率 > 90% 和验证准确率 > 85%,但我在测试数据上获得了 17% 的准确率。
模型训练 -->
model = Model(pre_trained_model.input, x)
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(lr=0.0001),#'adam'
metrics=['acc'])
history = model.fit_generator(
train_generator,
steps_per_epoch=600,#total data/batch size
epochs=100,
validation_data=validation_generator,
validation_steps=20,
verbose=1,callbacks = callbacks)
在训练好的模型上进行测试:
test_generator = test_datagen.flow_from_directory(
test_dir,target_size=(128, 128),batch_size=1,class_mode='categorical')
filenames = test_generator.filenames
nb_samples = len(filenames)
prediction = test_model.predict_generator(test_generator,steps=nb_samples,verbose=1)
将结果保存到 Pandas
predicted_class_indices = np.argmax(prediction,axis=1)
labels = (train_generator.class_indices) #geting names of classes from folder structure
labels = dict((v,k) for k,v in labels.items())
predictions = [k for k in predicted_class_indices]
results=pd.DataFrame({"image_name":filenames,
"label":predictions})
results['image_name'] = [each.split("\\")[-1] for each in results['image_name']]
一切看起来都很好,但我的预测仍然很差。 孩子们帮我弄清楚我在哪里犯了错误。
【问题讨论】:
标签: python tensorflow keras deep-learning multilabel-classification