运算符
运算符
就是数据之间的运算。和加减乘除一样的道理
tf.add(x, y, name=None) # 加法
tf.subtract(x, y, name=None) # 减法
tf.multiply(x, y, name=None) # 乘法
tf.divide(x, y, name=None) # 浮点除法, 返回的是浮点数
tf.mod(x, y, name=None) # 取余
tf.pow(x, y, name=None) # 幂次方
tf.square(x, name=None) # 平方
tf.sqrt(x, name=None) # 开根号,必须传入浮点数或复数
tf.exp(x, name=None) # 计算 e 的次方
tf.log(x, name=None) # 以 e 为底,必须传入浮点数或复数
tf.reciprocal(x, name=None) # 取倒数
tf.maximum(x, y, name=None) # 返回两tensor中的最大值
tf.minimum(x, y, name=None) # 返回两tensor中的最小值
上面的是比较常见的简单运算。
还有很多很多比较中要的是矩阵运算。因为在处理数据的时候大多数都是多维数组。。。重点讲解
矩阵乘法
tf.matmul(a, b, transpose_a=False, transpose_b=False,
adjoint_a=False, adjoint_b=False,
a_is_sparse=False, b_is_sparse=False, name=None)
a, b 是传入的两个矩阵,
transpose_a:如果 True,a 在乘法之前转置。
transpose_b:如果 True,b 在乘法之前转置。
adjoint_a:如果 True,a 在乘法之前共轭和转置。
adjoint_b:如果 True,b 在乘法之前共轭和转置。
a_is_sparse:如果 True,a 被视为稀疏矩阵。
b_is_sparse:如果 True,b 被视为稀疏矩阵。
例子
import tensorflow as tf
list_1 = [[1,2],[3,4]]
list_2 = [[1],[2]]
matmul = tf.matmul(list_1,list_2)
with tf.Session() as sess:
print(sess.run(matmul))
结果就是
[[ 5]
[11]]
转置
专置就是把行变成列,列变成行
tf.transpose(a, perm=None,conjugate=False name=None)
a:需要转置的矩阵
perm: a 的维数的排列
conjugate: 嗯嗯,如果传入的是复数,就相当于转换成共轨复数,和tf.tf.conj()差不多。
例子
import tensorflow as tf
list_1 = tf.constant([[1-1j,2-2j],
[3+3j,4+4j],
[5+5j,6-6j]])
transpose = tf.transpose(list_1, perm=None,conjugate=bool)
with tf.Session() as sess:
print(sess.run(transpose))
打印结果
[[1.+1.j 3.-3.j 5.-5.j]
[2.+2.j 4.-4.j 6.+6.j]]
conjugate=False 改成了conjugate=bool
如果不改就是
打印结果
[[1.-1.j 3.+3.j 5.+5.j]
[2.-2.j 4.+4.j 6.-6.j]]
其他的很多看官方文档或者用numpy转换也可以。。。