官方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 @ rsvd分解: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指定升序还是降序。返回排序后的元素idxa = 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直接返回排序后的tensortf.scatter_nd(indices, updates, shape, name=None)
用updates按idx为indices来生成shape的tensorindices = 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.linspace同np.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]]

1201

被折叠的 条评论
为什么被折叠?



