TensorFlow基本操作
1,TensorFlow常量
import tensorflow as tf tf.constant([2,4]) #一维向量 zero_t=tf.zeros([2,3],tf.int64) #生成一个2×3的0矩阵 one_1=tf.ones([3,1],tf.int8) #生成一个3×1的全1元素矩阵 t2=tf.linspace(2.0,6.0,5) #一维向量,元素取值在2到6之间取5个值 t3=tf.range(0,10,0.5) #生成一个一维向量,元素取值在0到10之间不包括10,取值间隔为0.5 t4=tf.random.normal([3,3],mean=2,stddev=3,seed=12) #正态分布,均值mean,方差stddev, t5=tf.random.truncated_normal([2,3],stddev=4,seed=12) #截断正态分布,seed是种子,但是不知道啥子意思 t6=tf.random.uniform([3,5],minval=1,maxval=5,seed=12) #均匀分布,最小值为1,最大值为5 t7=tf.image.random_crop(t6,[2,2]) #在t6中随机截取一个2×2的矩阵 t=tf.constant([[2,3],[3,5],[4,6]]) #生成一个指定矩阵 t8=tf.random.shuffle(t) #随机地将张量沿其第一维度打乱.(不太懂) t9=tf.eye(5) #生成一个5×5的单位矩阵 with tf.compat.v1.Session() as sess: print('zero_t',sess.run(zero_t)) print('one_1',sess.run(one_1)) print('t2',sess.run(t2)) print('t3',sess.run(t3)) print('t4',sess.run(t4)) print('t5',sess.run(t5)) print('t6',sess.run(t6)) print('t7',sess.run(t7)) print('t8',sess.run(t8)) print('t9',sess.run(t9))
2,占位符
声明数据类型,申请内存,方便后面赋值。
import tensorflow as tf x=tf.compat.v1.placeholder('float32') z=tf.compat.v1.placeholder('int32') y=2*x w=2*z data=tf.random.uniform([4,5],10) #这是一个tensor对象,不能直接进行矩阵运算,tensor就是一个张量 with tf.compat.v1.Session() as sess: x_data=sess.run(data) #转换成一个np.ndarray对象,我理解的就是一个矩阵 print('-------这是x的赋值============') print(x_data) print('-------这是2*x的结果==========') print(sess.run(y,feed_dict={x:x_data})) #feed_dict是对占位符x进行赋值,赋的值为x_data print(sess.run(y,feed_dict={x:32.0})) print(sess.run(w,feed_dict={z:22})) #对占位符进行赋值,要看前面定义的占位符的类型。根据占位符的类型进行赋值
3,基本运算
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
sess=tf.compat.v1.InteractiveSession()
x=tf.Variable(tf.random.uniform([3,3],0,2,dtype=tf.int32))
x.initializer.run()
y=tf.Variable(tf.random.uniform([3,3],1,6,dtype=tf.int32))
y.initializer.run()
a=tf.add(x, y, name=None) # 矩阵加法
b=tf.subtract(x, y, name=None) # 矩阵减法
c=tf.multiply(x, y, name=None) # 两个矩阵对应元素相乘
c_2=x*y # 这个*和multiply效果一样
c_1=tf.matmul(x,y) # 矩阵相乘
d=tf.divide(x, y, name=None) # 除法 ,矩阵对应元素相除
e=tf.math.mod(x, y, name=None) # 相除取余
print('x\n',x.eval())
print('y\n',y.eval())
print('这是加法\n',a.eval())
print('这是减法\n',b.eval())
print('这是乘法\n',c.eval())
print('这是乘法\n',c_2.eval())
print('这是矩阵乘法\n',c_1.eval())
print('这是除法\n',d.eval())
print('这是取余\n',e.eval())