TensorFlow基本的常量、变量和运算操作详解
简介
深度学习需要熟悉使用一个框架,本人选择了TensorFlow,一边学习一边做项目,下面简要介绍TensorFlow中的基本常量、变量和运算操作,参考斯坦福大学的cs20si和TensorFlow官网API。
常量
tf.constant()
tf.constant(value,dtype=None,shape=None,name='Const',verify_shape=False),value为值,dtype类型,shape为张量形状,name名称、verify_shape默认False,这些项可选。作用创建一个常量。
a=tf.constant(2,name="a")#print(a)=2 b=tf.constant(2.0,dtype=tf.float32,shape=[2,2],name="b")#2x2矩阵,值为2 c=tf.constant([[1,2],[3,4]],name="c")#2x2矩阵,值1,2,3,4
tf.zeros()和tf.zeros_like()
tf.zeros(shape,dtype=tf.float32,name=None),shape为张量形状,dtype类型,name名称。创建一个值为0的常量。
a=tf.zeros(shape=[2,3],dtype=tf.int32,name='a')#2x3矩阵,值为0,a=[[0,0,0],[0,0,0]]
tf.zeros_like(input_tensor,dtype=None,name=None,optimize=True),input_tensor为张量,dtype类型,name名称,optimize优化。根据输入张量创建一个值为0的张量,形状和输入张量相同。
input_tensor=tf.constant([[1,2],[3,4],[5,6]) a=tf.zeros_like(input_tensor)#a=[[0,0],[0,0],[0,0]]
tf.ones()和tf.ones_like()
tf.ones(shape,dtype=tf.float32,name=None),与tf.zeros()类似。
tf.ones_like(input_tensor,dtype=None,name=None,optimize=True),与tf.zeros_like()类似。
tf.fill()
tf.fill(dims,value,name=None),dims为张量形状,同上述shape,vlaue值,name名称。作用是产生一个张量,用一个具体值充满张量。
a=tf.fill([2,3],8)#2x3矩阵,值为8
tf.linspace()
tf.linspace(start,stop,num,name=None),start初始值,stop结束值,num数量,name名称。作用是产生一个等差数列一维向量,个数是num,初始值start、结束值stop。
a=tf.linspace(10.0,13.0,4)#a=[10.011.012.013.0]
tf.range()
tf.range(start=0,limit=None,delta=1,dtype=None,name='range'),start初始值,limit限制,delta增量,dtype类型,name名称。作用是产生一个等差数列的一维向量,初始值start,公差delta,结束值小于limit。
a=tf.range(start,limit,delta)#a=[3,6,9,12,15] b=tf.range(5)#b=[0,1,2,3,4]
tf.random_normal()
tf.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None),shape张量形状,mean均值,stddev标准差,dtype类型,seed随机种子,name名称。作用是产生一个正太分布分布,均值为mean,标准差为stddev。
tf.truncated_normal()
tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None),shape张量形状,mean均值,stddev标准差,dtype类型,seed随机种子,name名称。作用是产生一个截断的正太分布,形状为shape,均值为mean,标准差为stddev。
tf.random_uniform()
tf.random_uniform(shape,minval=0,maxval=None,dtype=tf.float32,seed=None,name=None),shape张量形状,minval最小值,maxval最大值,dtype类型,seed随机种子,name名称。作用是产生一个均匀分布,形状为shape,最小值为minval,最大值为maxval。
tf.random_shuffle()
tf.random_shuffle(value,seed=None,name=None),value张量,seed随机种子,name名称。作用是将张量value里面的值随机打乱。
a=tf.constant([[1,2],[3,4]],name='a') b=tf.random_shuffle(a,name='b')#b=[[2,3],[1,4]]
tf.random_crop()
tf.random_crop(value,size,seed=None,name=None),value张量,size大小,seed随机种子,name名称。作用是将张量value随机裁剪成size形状大小的张量,value形状大小>=size。
tf.multinomial()
tf.multinomial(logits,num_samples,seed=None,name=None),logits张量,num_samples采样输出,seed随机种子,name名称。作用是根据概率分布的大小,随机返回对应维度的下标序号。
a=tf.constant([[1,2,3,4,1],[3,2,3,4,3]],name='a') b=tf.multinomial(a,1,name='b')#b=[0,0]或者[0,2]或者[4,4]
tf.random_gamma()
tf.random_gamma(shape,alpha,beta=None,dtype=tf.float32,seed=None,name=None)。作用是产生一个Gamma分布。
变量
tf.Variable()
tf.Variable(
a=tf.Variable(2,name="scalar") b=tf.Variable([2,3],name="vector") c=tf.Variable([[0,1],[2,3]],name="matrix") W=tf.Variable(tf.zeros([784,10]),name="weights") Z=tf.Variable(tf.random_normal([784,10],mean=0,stddev=0.01),name="Z"
tf.Variable().initializer
1.全局变量初始化
init=tf.global_variables_initializer() withtf.Session()assess: sess.run(init)
2.指定变量初始化
W=tf.Variable(tf.truncated_normal([700,10])) withtf.Session()assess: sess.run(W.initializer) print(W)#Tensor("Variable/read:0",shape=(700,10),dtype=float32)
tf.Variable().eval()
返回变量值。
W=tf.Variable(tf.truncated_normal([700,10])) withtf.Session()assess: sess.run(W.initializer) print(W.eval()) >>[[-0.76781619-0.670204581.15333688...,-0.98434633-1.25692499-0.90904623] [-0.36763489-0.65037876-1.52936983...,0.19320194-0.38379928 0.44387451] [0.12510735-0.826490580.4321366...,-0.38169640.70466036 1.33211911] ..., [0.9203397-0.995908440.76853162...,-0.742907050.37568584 0.64072722] [-0.127535580.525715831.03265858...,0.59978199-0.91293705 -0.02646019] [0.19076447-0.62968266-1.97970271...,-1.483891610.68170643
tf.Variable.assign()
直接调用assign()并不起作用,它是一个操作,需要sess.run()操作才能起效果。
W=tf.Variable(10) W.assign(100) withtf.Session()assess: sess.run(W.initializer) print(W.eval())#>>10
W=tf.Variable(10) assign_op=W.assign(100) withtf.Session()assess: #sess.run(W.initializer)#当变量有值的话,可以省略,不需要初始化 sess.run(assign_op) printW.eval()#>>100
运算操作
运算操作图
tf.multiply()和tf.matmul()
tf.multiply(x,y,name)作用是x,y逐项相乘。
tf.matmul(x,y,name)作用是x,y矩阵相乘。
a=tf.constant([3,6]) b=tf.constant([2,2]) c1=tf.matmul(a,b)#报错 c2=tf.matmul(tf.reshape(a,[1,2]),tf.reshape(b,[2,1]))#c2=[[18]] c3=tf.multiply(a,b)#c3=[6,12]
加减就不细说了。
结束语
总结了一些常用的常量、变量和操作运算,供大家参考,尤其是对于tensorflow和python不太熟悉的选手有帮助,后续会补充更新,希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。