argmax函数轴取值

在深度学习中,argmax函数很常见,标签采用ont-hot,输出层用softmax激活可以加快网络训练速度和提升准确率,而在取值时,用argmax函数取值,涉及轴问题,数据在哪个轴,axis就填哪个轴,通常数据都在最后一个轴,下面举例说明。
一维情形:
代码:

import tensorflow as tf
import numpy as np

np_arry = (np.random.normal(size=[10]))

tf_arry=tf.Variable(np_arry)

init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print(sess.run(tf.argmax(tf_arry,axis=0)))

结果:6

二维:

import tensorflow as tf
import numpy as np

np_arry = (np.random.normal(size=[3,10]))

tf_arry=tf.Variable(np_arry)

init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print(sess.run(tf.argmax(tf_arry,axis=1)))

结果:[4 6 4]
注意,二维的时候,3是批次,10是数据,我们如果使axis=0,程序不会报错,但结果是错的,结果的意义是批次为10,数据长度为3
三维:

import tensorflow as tf
import numpy as np

np_arry = (np.random.normal(size=[3,4,10]))

tf_arry=tf.Variable(np_arry)

init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print(sess.run(tf.argmax(tf_arry,axis=2)))

结果:
[[0 2 8 5]
[4 9 1 0]
[7 2 6 4]]
三维一般在RNN中比较常见

### Argmax 数的定义与用法 Argmax 是一种常见的数学运算符,在编程中通常用于返回使目标数取得最大值的那个输入参数。它不仅限于特定的语言实现,而是广泛应用于机器学习、优化算法等领域。 #### 数学背景 在数学上,`argmax f(x)` 表示的是使得 `f(x)` 取得其最大值时对应的变量 `x` 的取值范围中的具体值[^1]。换句话说,如果存在多个可能的最大值,则 argmax 返回这些值所对应的具体位置或索引集合。 #### 编程环境下的应用实例 虽然原始引用未提及具体的 argmax 实现方式,但从通用模板机制来看,C++ 中可以利用模板来创建灵活的数据结构或者方法处理不同类型数据而无需重复编写代码片段[^3]。下面展示了一个简单的 Python 和伪 C++ 版本如何通过自定义逻辑模拟这一功能: 对于Python来说, ```python import numpy as np def argmax(lst): max_val = float('-inf') index_of_max = -1 for i, value in enumerate(lst): if value > max_val: max_val = value index_of_max = i return index_of_max example_list = [1, 3, 7, 2] print(argmax(example_list)) # 输出应该是列表中数值最大的那个元素的位置即 '2' ``` 而在类似C++这样的强类型静态编译型语言里则可以通过重载操作符或是设计泛化版本达到同样效果: ```cpp template<typename T> int find_argmax(const std::vector<T>& vec){ auto it = std::max_element(vec.begin(),vec.end()); return distance(vec.begin(),it); } std::vector<int> v{1,8,-4}; cout << "Index of maximum element is:"<<find_argmax(v)<<endl; // 这段程序会打印向量v里的最高整数所在下标也就是'1'. ``` 上述例子展示了两种不同风格的语言怎样去捕捉并表达相同概念——寻找数组/容器内的峰值及其相应定位信息的过程。 ### 注意事项 尽管这里提供了基本框架,实际项目开发过程中还需要考虑边界条件比如空集情况以及性能调优等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值