• Tensorflow知识点学习


    1、TensorFlow中Tensor维度理解:

    (1)对于2维Tensor 0维对应列 1维对应行
    (2)维度操作举例:
      对于k维的,tf.reduce_sum(x, axis=k-1)的结果是对最里面一维所有元素进行求和。
      tf.reduce_sum(x, axis=k-2)是对倒数第二层里的向量对应的元素进行求和。
      tf.reduce_sum(x, axis=k-3)把倒数第三层的每个向量对应元素相加。


    2、tensorflow中用来拼接张量的函数tf.concat(),用法:

    tf.concat([tensor1, tensor2, tensor3,...], axis)
    先给出tf源代码中的解释:

          t1 = [[1, 2, 3], [4, 5, 6]]
          t2 = [[7, 8, 9], [10, 11, 12]]
          tf.concat([t1, t2], 0)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
          tf.concat([t1, t2], 1)  # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
         
          # tensor t3 with shape [2, 3]
          # tensor t4 with shape [2, 3]
          tf.shape(tf.concat([t3, t4], 0))  # [4, 3]
          tf.shape(tf.concat([t3, t4], 1))  # [2, 6]

    这里解释了当axis=0和axis=1的情况,怎么理解这个axis呢?其实这和numpy中的np.concatenate()用法是一样的。
    axis=0     代表在第0个维度拼接
    axis=1     代表在第1个维度拼接
    对于一个二维矩阵,第0个维度代表最外层方括号所框下的子集,第1个维度代表内部方括号所框下的子集。维度越高,括号越小。
    对于这种情况,我可以再解释清楚一点:
    对于[ [ ], [ ]]和[[ ], [ ]],低维拼接等于拿掉最外面括号,高维拼接是拿掉里面的括号(保证其他维度不变)。
    注意:tf.concat()拼接的张量只会改变一个维度,其他维度是保存不变的。
    比如两个shape为[2,3]的矩阵拼接,要么通过axis=0变成[4,3],要么通过axis=1变成[2,6]。改变的维度索引对应axis的值。
    这样就可以理解多维矩阵的拼接了,可以用axis的设置来从不同维度进行拼接。
    对于三维矩阵的拼接,自然axis取值范围是[0, 1, 2]。
    对于axis等于负数的情况
    负数在数组索引里面表示倒数(countdown)。比如,对于列表ls = [1,2,3]而言,ls[-1] = 3,表示读取倒数第一个索引对应值。
    axis=-1表示倒数第一个维度,对于三维矩阵拼接来说,axis=-1等价于axis=2。同理,axis=-2代表倒数第二个维度,对于三维矩阵拼接来说,axis=-2等价于axis=1。
    一般在维度非常高的情况下,我们想在最'高'的维度进行拼接,一般就直接用countdown机制,直接axis=-1就搞定了。

  • 相关阅读:
    TensorFlow学习('utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
    Python常用库之三:Matplotlib
    线性回归 Python实现
    go 算法 查询字符在字符串中的位置
    Python与Go快速排序
    Python与Go斐波那契数列
    Python与Go选择排序
    Python与Go插入排序
    Python与Go冒泡排序
    git clone直接提交用户名和密码
  • 原文地址:https://www.cnblogs.com/llfctt/p/10609545.html
Copyright © 2020-2023  润新知