tensorflow2之数学运算

官方API

  • 大部分数学运算:tf.math

  • 随机数:tf.random

  • 矩阵运算:tf.linalg

    • 乘法:tf.matmul(实际上是tf.linalg.matmul),等同于@
    • 转置:tf.transpose(); tf.linalg.matrix_transpose
    • 生成对角阵:tf.linalg.diag:可定制对角线上一行/下一行等信息
    • 获取对角阵元素:tf.linalg.diag_part
    • 逆:tf.linalg.inv()
    • 求迹:tf.linalg.trace()
    • 范数:tf.linalg.norm()
    • 行列式:tf.linalg.det()
    • 行列式求log:tf.linalg.logdet
    • 特征值:tf.linalg.eigvalsh()
    • 特征值及特征向量:tf.linalg.eigh,类比np.linalg.eigh
    • 最小二乘:tf.linalg.lstsq
    • 线性方程求解:tf.linalg.solve
    • 矩阵分解
      • qr分解:q,r = tf.linalg.qr(a) # 验证 q @ r
      • svd分解:v,s,d = tf.linalg.svd(a) # 验证 s @ v @ d
  • 模型评估:tf.metrics, tf.keras.metrics

  • 优化:tf.keras.optimizers

  • 其它

    • tf.argsort(values, axis=-1, direction='ASCENDING', stable=False, name=None)
      tensor排序,axis指定指定排序轴,direction指定升序还是降序。返回排序后的元素idx
      a = tf.constant([1, 10, 26.9, 2.8, 166.32, 62.3])
      b = tf.argsort(a, direction='DESCENDING')  #返回 [4 5 2 1 3 0]
      
    • tf.sort
      同上,不同的是:tf.argsort返回排序后的tensor坐标,tf.sort直接返回排序后的tensor
    • tf.scatter_nd(indices, updates, shape, name=None)
      updatesidxindices来生成shape的tensor
      indices = tf.constant([[4], [3], [1], [7]])
      updates = tf.constant([9, 10, 11, 12])
      shape = tf.constant([8])
      tf.scatter_nd(indices, updates, shape)
      # 新生成的tensor为:对应indices的idx的值为对应的updates值,故返回结果为:[0, 11, 0, 10, 9, 0, 0, 12]
      
    • tf.unique(x, out_idx=tf.dtypes.int32)
      返回一维标量去重后的结果,以及原结果对应体重后的坐标
    • tf.linspacenp.linspace
  • 广播:类同numpy

    • 如果tensor维度不同,将维度较小的tensor进行扩展,直到两个tensor的维度都一样
    • 如果两个tensor在某个维度上的长度相同,或者其中一个tensor在该维度上的长度为1,那么这两个tensor在维度上是相容的
    • 如果两个tensor在所有维度上都是相容的,它们就能使用广播
    • 广播之后,每个维度的长度将取两个tensor在该维度长度的较大值
    • 在任何一个维度上,如果一个tensor的长度为1,另一个tensor的长度大于1,那么在该维度上,就好像是对第一个tensor进行了复制
        a = tf.constant([1,2,3])
        b = tf.constant([[0,0,0],[1,1,1],[2,2,2]])
        b + a  #等价于 b + tf.broadcast_to(a,b.shape)
        # 返回结果
          [[1, 2, 3],
          [2, 3, 4],
          [3, 4, 5]]
      
        c = tf.constant([1,2,3])
        d = tf.constant([[1],[2],[3]])
        c+d #等价于 tf.broadcast_to(c,[3,3]) + tf.broadcast_to(d,[3,3])
        # 返回结果
          [[2, 3, 4],
          [3, 4, 5],
          [4, 5, 6]]
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值