矩阵基本操作及实现
import tensorflow as tf
#开始一个交互会话
sess=tf.InteractiveSession()
I_matrix=tf.eye(5)
#定义一个5X5单位矩阵
print(I_matrix.eval())
#打印一个5X5单位矩阵
X=tf.Variable(tf.eye(10))
#定义一个初始化为10X10的单位矩阵的变量
X.initializer.run()
#初始化变量
print(X.eval())
#计算并打印变量
A=tf.Variable(tf.random_normal([5,10]))
#创建一个随机的5X10矩阵
A.initializer.run()
#两个矩阵相乘
product=tf.matmul(A,X)
print(product.eval())
b=tf.Variable(tf.random_uniform([5,10],0,2,dtype=tf.int32))
#创建一个由1,0组成的随机矩阵
b.initializer.run()
print(b.eval())
b_new=tf.cast(b,dtype=tf.float32)
#转换为float32
#两个矩阵相加
t1=tf.add(product,b_new)
t2=product-b_new
print("A*X _b\n",t1.eval())
print("A*X - b\n",t2.eval)
#tf.subtract()矩阵减法操作
实例:
import tensorflow as tf
#创建两个随机矩阵
a=tf.Variable(tf.random_normal([4,5],stddev=2))
b=tf.Variable(tf.random_normal([4,5],stddev=2))
#元素相乘
A=a*b
#乘以一个标量2
B=tf.scalar_mul(2,A)
#元素划分,其结果是
C=tf.div(a,b)
#即除法操作
#取模
D=tf.mod(a,b)
init_op=tf.global_variables_initializer()
#初始化变量
with tf.Session() as sess:
sess.run(init_op)
writer=tf.summary.FileWriter('graphs',sess.graph)
#指定一个文件来保存图
a,b,A_R,B_R,C_R,D_R=sess.run([a,b,A,B,C,D])
print("a\n",a,"\nb\n",b,"a*b\n",A_R,"\n2*a*b\n",B_R,"\na/b\n",C_R,"\na%b\n",D_R)
writer.close()
tf.div() 返回的张量的类型与第一个参数类型一致
所有加法、减、除、乘(按元素相乘)、取余等矩阵的算术运算都要求两个张量矩阵是相同的数据类型,否则就会产生错误。可以使用 tf.cast() 将张量从一种数据类型转换为另一种数据类型
如果在整数张量之间进行除法,最好使用 tf.truediv(a,b),因为它首先将整数张量转换为浮点类,然后再执行按位相除