13. Code For Deep Learning - ArgMax And Reduction Tensor Ops
我们这节课将学习张量的缩减操作,我们将重点关注在经常使用的argmax函数上面。我们将看到如何访问我们张量中的数据
首先是缩减的定义,一个张量的缩减操作是一个减少张量中包含的元素数量的操作,最终我们所作的张量运算是管理我们的张量中所包含的数据元素。缩减操作允许我们对单个张量中的元素执行操作。
下面看一个例子 对于一个3×3的张量,我们对他进行缩减操作,一个求和操作
第一个sum操作,我们取张量的标量分量的和,用这个张量求和法,这个调用的结果是一个标量值张量
numel是求张量中的元素个数
我们可以看到求和后的元素个数是少于之前的,所以我们说这个求和操作是一个缩减操作
下面再看一些其他的例子:
下面这些都是在张量元素上进行操作,将张量减少为单个元素标量张量
那么这里有个问题,就是缩减操作总是会变成一个带有单个元素的张量吗?
答案肯定是否定的,事实上,我们通常一次减少特定的轴,这通常会导致输出的减少,有多个元素来减少一个关于特定轴的张量,我们使用相同的方法,我们只是传递维度参数的值。
这是一个3×4的张量,秩为2,在这两个轴上有不同的连接将帮助我们更好的理解这些缩减操作。我们对两个轴进行操作
我们用一个轴来减少这个张量,沿着第一个轴运行的元素是数组,沿着第二个轴运行的元素是数字,
第一个dim=0是对第一个轴进行求和,我们把第一个轴的元素加起来
第二个轴包含了以四组为单位的数,一个是第一个轴的每一个元素,因为我们有三组四个数,所以我们得到3个和
下面我们看一下在神经网络编程中非常常见的简化操作,叫做ArgMax,它是一个数学函数,它告诉我们当输入的函数作为输入结果的时候,函数的最大值和输出值。所以ArgMax告诉我们一个张量内的最大值的索引位置,当我们在一个张量上调用ArgMax方法的时候,这个张量被缩减成一个新的张量
以下面这个例子为例,其中最大的是最后面这个5才对
下面第一行确定了最大值为5,argmax告诉我们最大的值的索引为11
我们如果没有为argmax指定一个轴的话,我们看下它flatten后的结果
下面我们看下指定轴的情况
max函数的返回,第一个答案包含最大的值,在这个第二个张量中包含了这些最大值的索引位置
这些值是通过在第一个轴上运行的每个数组中获得元素的最大值来确定的,对于第一个轴,最大的值是4335(竖着)
对于第二个轴,(横着),最大值是235,这些值是通过在第一个轴的每一个数组中取最大值来确定的,我们有三组,每组有四个元素,这为
在神经网络中我们经常用argmax函数来寻找那个类别的概率最大,因为输出张量的每个指标都对应着一个特定的类别或者预测类。
我们称他们为3×3的张量的均值的时候,输出是一个标量张量,如果我们想要把这个值(tensor(5))作为一个数字,我们可以用item张量法来做,它只适用于标量值张量,看看我们如何在一个张量中访问多个值
当对tensor的第一个轴进行求平均的时候,我们把它放进去作为一个列表或者放入一个numpy来进行处理。