首页 文章

在Tensorflow中计算正确预测的正确方法是什么?

提问于
浏览
1

我正在使用包含灰度图像作为输入和整数类标签的tfrecords文件在Tensorflow中提供简单的ConvNet .

我的损失被定义为 loss = tf.nn.sparse_softmax_cross_entropy_with_logits(y_conv, label_batch)

哪里 y_conv=tf.matmul(h_fc1_drop,W_fc2) + b_fc2

label_batch 是张量大小 [batch_size] .

我正试图通过使用来计算准确度

correct_prediction = tf.equal(tf.argmax(label_batch,1),tf.argmax(y_conv, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

这个 correct_prediction 语句给出了一个错误:

InvalidArgumentError (see above for traceback): Minimum tensor rank: 2 but got: 1

关于如何在TF中计算正确的预测,我有点困惑 .

2 回答

  • 1

    对于你的 y_conv 你做的一切都是正确的 - 它是一个形状矩阵 (batch_size, n_classes) ,对于每个样本和每个类,你有可能这是图像所属的类 . 因此,要获得实际的预测课程,您需要调用 argmax .

    但是你的标签是整数并且形状只有 (batch_size,) ,因为图像的类是已知的并且没有理由提供 n_classes 概率,单个整数也可以保存实际的类 . 所以你不需要在它上面调用 argmax 将概率转换为类,它已经有了类 . 要解决它,就这样做

    correct_prediction = tf.equal(label_batch, tf.argmax(y_conv, 1))
    
  • 3

    您可能希望使用0作为tf.argmax的dimension参数,因为label_batch和y_conv是向量 . 使用dimension = 1意味着张量等级至少为2.请参阅argmax here的维度参数的文档 .

    我希望有所帮助!

相关问题