tf.argmax函数

本文详细解释了TensorFlow库中argmax函数的使用,区分了针对向量和矩阵的索引选择,以及0和1参数在行比较和列比较中的作用。通过实例演示和理论说明,帮助读者理解argmax在多维数组中的实际应用。
摘要由CSDN通过智能技术生成

原文链接:https://blog.csdn.net/u013580539/article/details/79339250

关于tf.argmax,我看到网上的资料有些杂乱难以理解,所以写这篇文章。在tf.argmax( , )中有两个参数,第一个参数是矩阵,第二个参数是0或者1。0表示的是按列比较返回最大值的索引,1表示按行比较返回最大值的索引。下面上代码:

import tensorflow as tf

Vector = [1,1,2,5,3] #定义一个向量
X = [[1,3,2],[2,5,8],[7,5,9]] #定义一个矩阵

with tf.Session() as sess:
a = tf.argmax(Vector, 0)
b = tf.argmax(X, 0)
c = tf.argmax(X, 1)

print(sess.run(a))
print(sess.run(b))
print(sess.run(c))

输出的结果是:

3
[2 1 2]
[1 2 2]

【-----------------------------------2019.2.25补充-------------------------------------】

其实我们操作的多维数组,比如矩阵:

[[1, 2, 3]

[ 4, 5, 6]]

它的形状为(2, 3),其中第一个数字为“2”,第二个数字为“3”,也就是说(2, 3)这个形状的索引[0]是“2”,索引[1]是“3”,而我们这里是一个两行三列的矩阵。说到这里就得再牵扯一下n维数组,n维数组的形状是 (行数, 列数, …),那么既然如此,我们argmax()的第二个参数为0的时候表示按列比较,为1的时候表示按行比较。。。。。。。。。。

对,这里的0和1,表示的就是形状的索引!参数为0时,是根据(2, 3)0[0],即行的方向进行比较,参数为1时,是按照(2, 3)1[1],即列的方向进行比较!实际上,这里的“行”,也即为我们的样本数量,毕竟我们都知道,在tensorflow中我们的数据格式下标[0]的是batchsize

实验验证我们的理论:

import tensorflow as tf

x = [[1, 2, 3],[ 4, 5, 6]]

with tf.Session() as sess:
d1 = tf.argmax(x, 0)
d2 = tf.argmax(x, 1)

print(sess.run(d1))
print(sess.run(d2))

先猜一猜输出结果,再查看答案哟 ~~

答案是:

[1 1 1]
[2 2]
你,做对了吗?

到现在呢,可能大家还有一个疑问:对于Vector = [1,1,2,5,3],为什么argmax的参数写0呢,这里不是应该按照1的方向比较吗?

其实啊,这里的Vector是向量,并不是矩阵,而向量是只有一个维度的,所以,我们argmax中的参数就只能为0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值