我尝试修改 code来自 Convolutional Neural Network TensorFlow Tutorial从每个测试图像中获取每个类的单一概率。
有什么替代 tf.nn.in_top_k我可以用吗?因为这个方法只返回一个 bool 张量。但我想保留个人值(value)观。
我使用的是 Tensorflow 1.4 和 Python 3.5,我认为第 62-82 行和第 121-129/142 行可能是要修改的行。有人给我提示吗?
第 62-82 行:
def eval_once(saver, summary_writer, top_k_op, summary_op):
"""Run Eval once.
Args:
saver: Saver.
summary_writer: Summary writer.
top_k_op: Top K op.
summary_op: Summary op.
"""
with tf.Session() as sess:
ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir)
if ckpt and ckpt.model_checkpoint_path:
# Restores from checkpoint
saver.restore(sess, ckpt.model_checkpoint_path)
# Assuming model_checkpoint_path looks something like:
# /my-favorite-path/cifar10_train/model.ckpt-0,
# extract global_step from it.
global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1]
else:
print('No checkpoint file found')
return
第 121-129 + 142 行
[....]
images, labels = cifar10.inputs(eval_data=eval_data)
# Build a Graph that computes the logits predictions from the
# inference model.
logits = cifar10.inference(images)
# Calculate predictions.
top_k_op = tf.nn.in_top_k(logits, labels, 1)
[....]
请您参考如下方法:
您可以根据原始 logits 计算类别概率:
# The vector of probabilities per each example in a batch
prediction = tf.nn.softmax(logits)
作为奖励,以下是获得精确准确度的方法:
correct_pred = tf.equal(tf.argmax(logits, 1), tf.argmax(labels, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
