我的CNN项目基于AlexNet模型实施here。
我有两个主要功能training
和prediction
,我想问一下预测部分中的指标,他们从与训练集相比的不同目录中的测试集中读取图像。
这是prediction
代码:
def prediction(self):
with tf.Session() as sess:
# Construct model
pred = self.alex_net_model(self.img_pl, self.weights, self.biases, self.keep_prob)
# Restore model.
ckpt = tf.train.get_checkpoint_state("ckpt_dir")
if(ckpt):
self.saver.restore(sess, MODEL_CKPT)
print "Model restored"
else:
print "No model checkpoint found to restore - ERROR"
return
### Metrics ###
y_p = tf.argmax(pred,1) # the value predicted
target_names = ['class 0', 'class 1', 'class 2']
list_pred_total = []
list_true_total = []
# Accuracy Precision Recall F1-score by TEST IMAGES
for step, elems in enumerate(self.BatchIteratorTesting(BATCH_SIZE)):
batch_imgs_test, batch_labels_test = elems
y_pred = sess.run([y_p], feed_dict={self.img_pl: batch_imgs_test, self.keep_prob: 1.0})
#print(len(y_pred))
list_pred_total.extend(y_pred)
y_true = np.argmax(batch_labels_test,1)
#print(len(y_true))
list_true_total.extend(y_true)
#### TODO: METRICS FOR PRECISION RECALL F1-SCORE ####
我的问题是:
classification_report
?training
y_pred
是 1 elem的列表,而y_true
是len 64 (批量大小)的numpy数组?如果这两个len不同,我不能metrics.classification_report(list_true_total, list_pred_total, target_names=target_names)
。
希望能解决我的疑虑。
答案 0 :(得分:1)
如果你拨打y_pred = sess.run(y_p,...
(注意[]
周围缺少y_p
),你会得到一个numpy数组len(batch_size)。
我不明白关于classification_report的其他问题。