之前对这个函数理解一直有误。
以为是获取一个张量中,行/列的最大值。
其实他获取的是行/列中最大值的索引号。
tf.argmax(input, axis=None, name=None, dimension=None)
axis:0按列,1按行。
举个例子
[[1,2,3,4]]
A=[[1,2,3,4]] tf.argmax(A, 0) tf.argmax(A, 1)
会得到
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff }
span.s1 { }
[0 0 0 0]
[3]
因为按列算,每一列的第唯一一个数组就是最大的数字,其索引号都是0。所以所有的列返回的都是0,总共有4列所以返回:[0,0,0,0]
按行计算得到的就是这一行4个数字中最大的数字4的索引号:3所以返回[3]
在TensorFlow MNIST最佳实践中计算交叉熵的时候就使用了这个函数:
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
在计算单一分类问题的交叉熵时,通常是这样绑定使用的。
这里的y_是测试数据的真实值。y是我们神经网络预测的值。
这里通过tf.argmax(y_, 1)方法,就获取到正确答案的序号了。然后再进行交叉熵的计算。
参考链接:
http://blog.csdn.net/zj360202/article/details/70259999
http://blog.csdn.net/UESTC_C2_403/article/details/72232807
时间: 2024-10-19 01:37:32