numpy 和tensorflow中argmax(),argmin()函数使用讲解
2018-01-03 11:21
309 查看
在使用argmax()函数时,比如在深度学习里面计算acc经常要用到这个参数,这个参数返回的是沿轴axis最大值的索引值,对于,tensorflow和numpy用法是一样的,此处我就用numpy来举例说明。
输出结果为3,因为a里面7是最大的,如果没有指定axis,默认就是None,相当于把array平铺为:[2,5,6,7,6,1],那么结果就是3,因为索引3对应的值最大,再来看一下三维的情况
### 三维array的情况
这个里面,19最大,把它平铺,19对应的索引就是6,那么np.argmax(b)就是6,经过验证输出就是6
4000
沿着,我觉得就是投影,就是沿着这个轴投影,每一根投影线上最大值的索引。
这次,我们给定axis=1,那么按照我们说的,就是沿着axis=1投影,看得出来,投影后我们只有两个值,因为[2,5,6]在一根投影线上,相当于就是我理解的一个投影线,因为这些值投影后重叠了,相当于只有一个值,所以[7,6,1]也是一个投影线,然后在这两个投影线取最大值的索引,对于[2,5,6]来说,最大值索引就是2,[7,6,1]最大值索引就是0,所以结果为[2,0]
然后,我们分析,当我们设置axis=0的时候,也就是沿着axis=0,投影,那么[2,7],[5,6],[6,1]分别在一个投影线上,所以结果为[1,1,0],经过验证确实是这样的。
还是用上面的array来说,看一下结果:
同样的分析,我们指定了轴为1,那么也就是说我们沿着axis=1轴投影,这是一个体,那么我们投影线相当于有3*2条,其实在同一根投影线上是axis=0和axis=2的一个组合,比如axis=1中第一个上的和axis=2的第一个上的组合,也就是b[0,:,0],b[0,:,1],b[2,:,0],b[2,:,1],b[3,:,0],b[3,:,1]这六条线的索引对应的最大值,我们看他们分别为[ 0 14],[16 5],[16 19],[6 2],[11 5],[11 7],那么结果就是[[1,0],[1,0],[0,0]]。
所以其实和二维是一样的,所谓投影线,其实可以这样表示,我们去axis=0,那么我们遍历其他维度的大小,比如 arr[:,0,0],arr[:,0,1],也就是沿着那个轴,那么轴取全部值,然后再在投影线上找最大值对应索引。
argmax(a, axis=None, out=None) # a 表示array # axis 表示指定的轴,默认是None,表示把array平铺, # out 默认为None,如果指定,那么返回的结果会插入其中
对于axis默认为None的情况
首先我们看axis=None,也就是默认的时候:二维array情况
a = np.array([[2,5,6],[7,6,1]]) print(np.argmax(a))
输出结果为3,因为a里面7是最大的,如果没有指定axis,默认就是None,相当于把array平铺为:[2,5,6,7,6,1],那么结果就是3,因为索引3对应的值最大,再来看一下三维的情况
### 三维array的情况
b = np.random.randint(20,size=[3,2,2]) print(b) [[[ 0 16] [14 5]] [[16 6] [19 2]] [[11 11] [ 5 7]]]
这个里面,19最大,把它平铺,19对应的索引就是6,那么np.argmax(b)就是6,经过验证输出就是6
对于给定axis的情况
如果给定axis,那么返回的就是沿着给定轴的最大索引,所谓4000
沿着,我觉得就是投影,就是沿着这个轴投影,每一根投影线上最大值的索引。
二维情况分析
a = np.array([[2,5,6],[7,6,1]]) print(np.argmax(a,axis=1)) [2 0]
这次,我们给定axis=1,那么按照我们说的,就是沿着axis=1投影,看得出来,投影后我们只有两个值,因为[2,5,6]在一根投影线上,相当于就是我理解的一个投影线,因为这些值投影后重叠了,相当于只有一个值,所以[7,6,1]也是一个投影线,然后在这两个投影线取最大值的索引,对于[2,5,6]来说,最大值索引就是2,[7,6,1]最大值索引就是0,所以结果为[2,0]
然后,我们分析,当我们设置axis=0的时候,也就是沿着axis=0,投影,那么[2,7],[5,6],[6,1]分别在一个投影线上,所以结果为[1,1,0],经过验证确实是这样的。
三维情况分析
b = np.random.randint(20,size=[3,2,2]) print(b) [[[ 0 16] [14 5]] [[16 6] [19 2]] [[11 11] [ 5 7]]]
还是用上面的array来说,看一下结果:
print(np.argmax(b,axis=1)) [[1 0] [1 0] [0 0]]
同样的分析,我们指定了轴为1,那么也就是说我们沿着axis=1轴投影,这是一个体,那么我们投影线相当于有3*2条,其实在同一根投影线上是axis=0和axis=2的一个组合,比如axis=1中第一个上的和axis=2的第一个上的组合,也就是b[0,:,0],b[0,:,1],b[2,:,0],b[2,:,1],b[3,:,0],b[3,:,1]这六条线的索引对应的最大值,我们看他们分别为[ 0 14],[16 5],[16 19],[6 2],[11 5],[11 7],那么结果就是[[1,0],[1,0],[0,0]]。
所以其实和二维是一样的,所谓投影线,其实可以这样表示,我们去axis=0,那么我们遍历其他维度的大小,比如 arr[:,0,0],arr[:,0,1],也就是沿着那个轴,那么轴取全部值,然后再在投影线上找最大值对应索引。
总结
tensorflow里面的是一样的用法,同时argmin()用法相同,只是他是求最小值的索引。相关文章推荐
- mysql的IFNULL、IF、CASE...WHEN...THEN...函数的使用讲解
- php从底层读取pdf文档-无需PDF函数库支持-fPDF类使用讲解
- 【郝斌数据结构自学笔记】10-11_跨函数使用内存讲解及其示例
- C语言可变参数函数的使用方法讲解
- 深入讲解Python函数中参数的使用及默认参数的陷阱
- python numpy:1 numpy.array和numpy.matrix常用函数使用
- C++ 函数映射使用讲解
- 实例讲解Python的函数闭包使用中应注意的问题
- 举例讲解Go语言中函数的闭包使用
- 使用C语言的fork()函数在Linux中创建进程的实例讲解
- Python语言学习讲解三:详解Python中的split()函数的使用方法
- 郝斌数据结构 10 跨函数使用内存讲解及其示例
- 以实例全面讲解PHP中多进程编程的相关函数的使用,php函数
- 深入讲解Python函数中参数的使用及默认参数的陷阱
- 以实例全面讲解PHP中多进程编程的相关函数的使用
- sqlserver中cast,convert,datepart,left,right这三个函数的使用讲解
- numpy中tile函数讲解
- 实例讲解Python的函数闭包使用中应注意的问题
- Perl5 split 函数的使用详细讲解
- iOS讲解迷惑--Swift中函数的使用