tensorflow axis,numpy axis的理解

  tensorflow axis,numpy axis的理解

  在numpy库中调用concatenate()时,存在axis=-1/1/0的情况。下面文章主要介绍TensorFlow和Numpy矩阵运算中关于axis理解和axis=-1解释的相关信息。通过示例代码详细介绍,有需要的朋友可以参考一下。

  

目录
1.axis使用axis 2。了解安讯士并总结参考资料

  

1. axis的基本使用

  轴在numpy和tensorflow中经常被用作对矩阵(张量)进行运算时需要指定的重要参数之一。设置轴=-1,0,1.指定如何划分操作的数据。

  一句话解释:设axis=i,然后沿着第I个下标变化的方向操作![1]

  我就不举简单的例子了。还有很多其他的博客。下面是一个稍微复杂一点的三维矩阵的例子:

  设嵌入是形状=[3,4,5]的矩阵,如下所示:

  嵌入=[[[-0.30166972 0.25741747-0.07444257 0.24323353835]

  [-0.22572032 0.1288028 -0.4686908 -0.07217035 0.05287632]

  [ 0.15845934 0.07064888 0.00922218 0.2841002 -0.24992025]

  [ 0.43347922 -0.43738696 -0.08176881 0.34185413 -0.2826353 ]]

  [[-0.08590135 0.06792518 -0.07807922 -0.28746927 -0.10613027]

  [ 0.07476929 0.132256 -0.0926154 0.39621904 0.2497718 ]

  [-0.15389556 0.0867373 0.19403657 -0.11003655 0.317669 ]

  [ 0.3949038 -0.17275128 0.34710506 -0.02576578 -0.17427891]]

  [[-0.27703786 0.02631402 0.22129896 -0.07714707 0.41439041]

  [-0.08512023 0.19059369 -0.13418713 -0.12881753 -0.26143318]

  [-0.333749 0.27034065 0.45429572 -0.46164128 -0.3955955 ]

  [ 0.24430516 -0.3841647 0.37126407 -0.463441 -0.1441828 ]]]

  对嵌入矩阵执行以下操作:

  A=tf.math.argmax (embeddings,axis=-1)# TF . math . arg max=TF . arg max,用于返回最大值对应的索引。

  b=tf.math.argmax(嵌入,轴=1)

  c=tf.math.argmax(嵌入,轴=0)

  用tf。会话()为sess:

  sess . run(TF . global _ variables _ initializer())

  Print(嵌入s.eval ()) # a.eval在打印时等同于sess.run(a)。

  print(a.eval())

  print(b.eval())

  打印(c.eval())

  结果如下:

  [[1 1 3 0]

  [1 3 4 0]

  [4 1 2 2]] # axis=-1,shape=[3,4]

  [[3 0 2 3 1]

  [3 1 3 1 2]

  [3 2 2 0 0]] #轴=1,形状=[3,5]

  [[1 0 2 0 2]

  [1 2 1 1 1]

  [0 2 2 0 1]

  [0 1 2 0 2]] #轴=0,形状=[4,5]

  你明白吗?参考上面的句子来解释,然后结合矩阵的下标来理解。

  刚写成下标的矩阵意思是:

  嵌入=[[[a000,a001,a002,a003,a004],

  [a010,a011,a012,a013,a014],

  [a020,a021,a022,a023,a024],

  [a030,a031,a032,a033,a034]]

  [[a100,a101,a102,a103,a104],

  [a110,a111,a112,a113,a114],

  [a120,a121,a122,a123,a124],

  [a130,a131,a132,a133,a134]]

  [[a200,a201,a202,a203,a204],

  [a210,a211,a212,a213,a214],

  [a220,a221,a222,a223,a224],

  [a230,a231,a232,a233,a234]]

  以axis=0为例,然后沿着第0个下标(最左边的下标)的变化方向进行运算,即把除了第0个下标以外索引相同的部分分成一组,然后进行运算。具体分组如下(部分分组省略):

  从上图可以看出,每3个数分成一组,所以现在一共是4*5组(所以最后返回的结果也是一个shape=[4,5] matrix)。对每组执行一次reduce_max运算,返回每组中值最大的数的索引,形成一个矩阵。

  这里需要特别说明一下axis=-1的运算。可能不熟悉python的人不会明白这里的dimension -1是哪个。在pyhton中,-1代表最后一个,也就是说,如果你的矩阵形状=[3,4,5],那么对于这个矩阵,axis=-1,实际上等于axis=2。因为这是一个三维矩阵,axis的可能值是0,1,2,所以最后一个是2。你可以自己试试,看两个值是不是一样的。

  

2. 对axis的理解

  通过上面的例子,你可能已经发现axis对矩阵进行分组,然后对它们进行操作。分组意味着降维。

  上例中,原矩阵的形状=[3,4,5],轴=0,然后得到矩阵形状=[4,5]。同理,取axis=1再运算得到矩阵shape=[3,5]。轴=-1(轴=2)操作后,形状=[3,4]。掌握这一点有助于你在神经网络变换或数据运算中了解矩阵变换前后的形状,从而加快对模型的理解。

  

总结

  关于TensorFlow和Numpy矩阵运算中的axis理解和axis=-1解释的这篇文章到此为止。关于矩阵运算中axis=-1的更多解释,请搜索热门IT软件开发工作室之前的文章或继续浏览以下相关文章。希望大家以后多多支持热门的IT软件开发工作室!

  

参考资料

  [1]这个一句话的解释来自:https://www.jb51.net/article/242077.htm

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: