1. 创建一个矩阵张量
tf.constant([1, 2, 3], shape=[2, 3])
生成一个2行3列的矩阵,第一行由输入填充,第二行由输入的数据随机填充。输出如下:
[[1 2 3], [3 3 3]]. 这是TF矩阵生成的一种优化结果。
2. 随机生成张量矩阵
(1) tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
正态分布随机数,均值mean,标准差stddev
(2) tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
截断正态分布随机数,均值mean,标准差stddev,不过只保留 [mean-2*stddev, mean+2*stddev] 范围内的随机数
(3) tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None)
均匀分布 随机数,范围为 [minval, maxval]
3. 对于已生成的矩阵,可以通过 tf.shape(Tensor) 获取到矩阵张量 的形状。
4. 如果 需要重新改变矩阵的大小,使用 tf.reshape(tensor, shape, name=None) 方法。
(1)如果shape=[-1],表示将tensor展开成一个list。
(2)如果shape=[a,b,c...],其中a,b,c...均大于0,那么就是常规用法。
(3)如果shape=[a,-1,c....],此时b=-1,a,c...依然大于0,这 表示tf会根据tensor的原尺寸,自动计算b的值。
5. TF中几种常见的矩阵函数
操作 | 描述 |
---|---|
tf.diag(diagonal, name=None) | 返回一个给定对角值的对角tensor |
tf.diag_part(input, name=None) | 功能与上面相反 |
tf.trace(x, name=None) | 求一个2维tensor足迹,即对角值diagonal之和 |
tf.transpose(a, perm=None, name='transpose') | 调换tensor的维度顺序 按照列表perm的维度排列调换tensor顺序 |
tf.matmul(a, b, transpose_a=False, transpose_b=False, a_is_sparse=False, b_is_sparse=False, name=None) | 矩阵相乘 |
tf.matrix_determinant(input, name=None) | 返回方阵的行列式 |
tf.matrix_inverse(input, adjoint=None, name=None) | 求方阵的逆矩阵,adjoint为True时,计算输入共轭矩阵 |
tf的逆矩阵cholesky(input, name=None) | 对输入方阵cholesky分解 即把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解 A = LL^T |
tf.matrix_xolve(matrix, rhs, adjoint=None, name=None) | 求解tf.matrix_xolve(matrix, rhs, adjoint=None, name=None) matrix为方阵,shape为[M,M],rhs的shape为[M,K],output为[M,K] |