tensorflow之argmax函数独特讲解

在讲解之前,先来一个该函数的参数说明:

argmax(a, axis=None, out=None)
# a 表示array
# axis 表示指定的轴,默认是None,表示把array平铺,
# out 默认为None,如果指定,那么返回的结果会插入其中

对于axis这个参数,对于大家来说是最困惑或者是最头疼的事情,相信你在网上看到很多这样的结论:axis=0时,返回列最大的索引值;axis=1时,返回行最大的索引值;你也许也看到过使用投影的方法,可以参考:https://www.cnblogs.com/psztswcbyy/p/9282530.html

不过这些结论我们经常混淆,如:行和列记反了,而使用投影的方式分析起来比较晦涩难懂

 

好了,今天带大家使用数中括号[]的方式来快速得出答案

 

以三维数组进行讲解,其它的维度分析过程差不多

array=[[[0,16],[14,5]],
       [[16,6],[19,2]],
       [[11,11],[5,7]]
      ]

1   当axis=0时,即tensorflow.argmax(array,axis=0),好了,我们现在开始数中括号,

可以写成array=[大元素1,大元素2,大元素3],现在比较的是各大元素之间对应元素的值,然后得出索引,最终输出的结果一定是类似这样的结构如下:      [大元素1]

现在讲解各大对应元素索引的计算:

所以最终结果拼接起来为     [大元素]=[[[1,0],[1,2]]],由于最外一层中括号在表示时显得多此一举了,所以最终结果为:

[[1,0],[1,2]]

 

编写程序验证如下:

 

可能你看到这里还是没明白我想表达什么,莫急,且听我分析完axis=1和axis=2的情况再来对比就明白了

 

2  axis=1时,数第二个中括号,如下图:

 

可以写成:array=[[大元素1,大元素2],[大元素1,大元素2],[大元素1,大元素2]],最终输出的结果一定是类似这样的结构如下:   [[大元素1,大元素2]]

现在讲解各大对应元素索引的计算:

 

最终结果为:[[1,0],[1,0],[0,0]]

程序验证如下:

 

3  当axis=2时,数第三个中括号,如下图:

可以写成:

array=[[[大元素1,大元素2],[大元素1,大元素2]],

[[大元素1,大元素2],[大元素1,大元素2]],

[[大元素1,大元素2],[大元素1,大元素2]]

],

最终输出的结果一定是类似这样的结构如下:

[[[大元素1],[大元素1]],

[[大元素1],[大元素1]],

[[大元素1],[大元素1]]

]

其实所谓的大元素只剩下一个元素,所以中括号显得多余了,可以写成:

[[大元素1,大元素1],

[大元素1,大元素1],

[大元素1,大元素1]

]

现在讲解各大对应元素索引的计算:

 

程序验证如下:

4  axis不可能等于3了,因为所谓的大元素只有一个元素了

 

好了,分析到这里了,二维和无穷多维的分析方法一样,其实核心思想都是使用投影的方法,最后给一张以投影方式的三维图,请自己分析了,如下图:

   

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值