Tensorflow中一些常见的函数 1.tf.constant(value,dtype=None,shape=None,name='Const') 创建一个常量tensor,按照给出value来赋值,可以用shape来指定其形状。value可以是一个数,也可以是一个list。 如果是一个数,那么这个常亮中所有值的按该数来赋值。 如果是list,那么len(value)一定要小于等于shape展开后的长度。赋值时,先将value中的值逐个存入。不够的部分,则全部存入value的最后一个值。 
2.tf.nn.relu ####使用激活函数relu进行计算 类似的还有 tf.sigmoid , tf.tanh 3.tf.matmul 进行矩阵相乘 4.tf.placeholder 运行时传入参数,placeholder(type,strucuct…)它的第一个参数是你要保存的数据的数据类型,大多数是tensorflow中的float32数据类型,后面的参数就是要保存数据的结构,比如要保存一个1×2的矩阵,则struct=[1 2]。 5.tf.Variable(initializer, name) initializer是初始化参数,可以为tf.random_normal,tf.constant,tf.constant等,name就是变量的名字,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 import  tensorflow as  tf;import  numpy as  np;    import  matplotlib.pyplot as  plt;         a1 = tf.Variable(tf.random_normal(shape=[2 ,3 ], mean=0 , stddev=1 ), name='a1' )   a2 = tf.Variable(tf.constant(1 ), name='a2' )   a3 = tf.Variable(tf.ones(shape=[2 ,3 ]), name='a3' )       with  tf.Session() as  sess:       sess.run(tf.initialize_all_variables())        print  sess.run(a1)        print  sess.run(a2)        print  sess.run(a3) 
输出的结果如下: 1 2 3 4 5 6 输出: [[ 0.76599932  0.99722123 -0.89361787]  [ 0.19991693 -0.16539733  2.16605783]] 1 [[ 1.  1.  1.]  [ 1.  1.  1.]] 
6.tf.truncated_normal(shape, mean, stddev) shape表示生成张量的维度,mean是均值,stddev是标准差。这个函数产生正太分布,均值和标准差自己设定。这是一个截断的产生正太分布的函数,就是说产生正太分布的值如果与均值的差值大于两倍的标准差,那就重新生成。和一般的正太分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差,但是一般的别的函数是可能的。 ###示例代码:1 2 3 4 5 6 7 8 import  tensorflow as  tf;  import  numpy as  np;  import  matplotlib.pyplot as  plt;     c = tf.truncated_normal(shape=[10 ,10 ], mean=0 , stddev=1 )      with  tf.Session() as  sess:      print  sess.run(c) 
输出结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 输出: [[ 1.95758033  -0.68666345  -1.83860338   0.78213859  -1.08119416  -1.44530308     0.38035342   0.57904619  -0.57145643  -1.22899497 ]  [-0.75853795   0.48202974   1.03464043   1.19210851  -0.15739718   0.8506189     1.18259966  -0.99061841  -0.51968449   1.38996458 ]  [ 1.05636907  -0.02668529   0.64182931   0.4110294   -0.4978295   -0.64912242     1.27779591  -0.01533993   0.47417602  -1.28639436 ]  [-1.65927458  -0.364887    -0.45535028   0.078814    -0.30295736   1.91779387    -0.66928798  -0.14847915   0.91875714   0.61889237 ]  [-0.01308221  -0.38468206   1.34700036   0.64531708   1.15899456   1.09932268     1.22457981  -1.1610316    0.59036094  -1.97302651 ]  [-0.24886213   0.82857937   0.09046989   0.39251322   0.21155456  -0.27749416     0.18883201   0.08812679  -0.32917103   0.20547724 ]  [ 0.05388507   0.45474565   0.23398806   1.32670367  -0.01957406   0.52013856    -1.13907862  -1.71957874   0.75772947  -1.01719368 ]  [ 0.27155915   0.05900437   0.81448066  -0.37997526  -0.62020499  -0.88820189     1.53407145  -0.01600445  -0.4236775   -1.68852305 ]  [ 0.78942037  -1.32458341  -0.91667277  -0.00963761   0.76824385  -0.5405798    -0.73307443  -1.19854116  -0.66179073   0.26329204 ]  [ 0.59473759  -0.37507254  -1.21623695  -1.30528259   1.18013096  -1.32077384    -0.59241474  -0.28063133   0.12341146   0.48480138 ]] 
7.tf.train.ExponentialMovingAverage 这个函数用于更新参数,就是采用滑动平均的方法更新参数。这个函数初始化需要提供一个衰减速率(decay),用于控制模型的更新速度。这个函数还会维护一个影子变量(也就是更新参数后的参数值),这个影子变量的初始值就是这个变量的初始值,影子变量值的更新方式如下: 1 shadow_variable = decay * shadow_variable + (1-decay) * variable 
shadow_variable是影子变量,variable表示待更新的变量,也就是变量被赋予的值,decay为衰减速率。decay一般设为接近于1的数(0.99,0.999)。decay越大模型越稳定,因为decay越大,参数更新的速度就越慢,趋于稳定。 tf.train.ExponentialMovingAverage这个函数还提供了自己动更新decay的计算方式:decay= min(decay,(1+steps)/(10+steps))其中steps是迭代的次数,可以自己设定。 示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import  tensorflow as  tf;  import  numpy as  np;  import  matplotlib.pyplot as  plt;     v1 = tf.Variable(0 , dtype=tf.float32)   step = tf.Variable(tf.constant(0 ))      ema = tf.train.ExponentialMovingAverage(0.99 , step)   maintain_average = ema.apply([v1])       with  tf.Session() as  sess:      init = tf.initialize_all_variables()       sess.run(init)         print  sess.run([v1, ema.average(v1)])         sess.run(tf.assign(v1, 5 ))      sess.run(maintain_average)       print  sess.run([v1, ema.average(v1)])        sess.run(tf.assign(step, 10000 ))      sess.run(tf.assign(v1, 10 ))      sess.run(maintain_average)       print  sess.run([v1, ema.average(v1)])         sess.run(maintain_average)       print  sess.run([v1, ema.average(v1)])  
输出结果如下: 1 2 3 4 5 输出: [0.0 , 0.0 ] [5.0 , 4.5 ] [10.0 , 4.5549998 ] [10.0 , 4.6094499 ] 
解释:每次更新完以后,影子变量的值更新,varible的值就是你设定的值。如果在下一次运行这个函数的时候你不在指定新的值,那就不变,影子变量更新。如果指定,那就variable改变,影子变量也改变 8.tf.clip_by_value 将张量中的一个值限制在一个范围之内 如:1 2 a = tf.constant([[1.0 ,2.0 ,3.0 ],[4.0 ,5.0 ,6.0 ]]) print(tf.clip_by_value(a,2.5 ,4.5 ).eval()) 
输出[[2.5,2.5,3],[4,4.5,4.5]]由此可见小于2.5的换成了2.5,大于4.5的都换成了4.5 Tensor.eval() 和 Operation.run() 方法代替 Session.run()。
9.tf.reduce_mean 指求平均值 如:tf.reduce_mean(([1,2,3],[4,5,6])) 等于:(1+2+3+4+5+6)/6 = 3.5 10.p * tf.log(q) 交叉熵损失函数  H(p,q) = -求和符(p(x)log(q(x)))可以直接用Tensorflow交叉熵函数来计算 p * tf.log(q) 11.tf.nn.softmax_cross_entropy_with_logits(y,y_) 直接通过这个公式来实现softmax回归之后的交叉熵损失函数(y指原是神经网络的输出结果,y_指标准答案) 12.tf.reduce_sum 该函数用来求和 13.tf.greater 输入两个张量并比较大小,当维度不同时,进行类似于numpy广播的处理,当第一个参数大于第二个是为True反之为False 14.tf.select ####(目前已经更新为tf.where)第一个参数为选择条件,当满足时使用第二个参数,不满足时返回第三个参数 15.tf.train.AdamOptimizer 该函数来控制学习速度。AdamOptimizer 通过使用动量(参数的移动平均数)来改善传统梯度下降,促进超参数动态调整。 16.tf.contrib.layers.l1_regularize 可以计算解决过拟合化问题的l1正则化项的值   #lambda表示正则化的权重 17.tf.contrib.layers.l2_regularize 可以计算解决过拟合化问题的l2正则化项的值 18.tf.add_to_collection 把变量放入一个集合,把很多变量变成一个列表 19.tf.train.ExpontialMovingAverage 实现滑动平均模型 20.tf.assign(x,y) 将y的值赋值给x  30. 1 2 mnist = input_data.resd_data_sets("文件路径”)    mnist.train.next_batch(batch_size)  #input_data.resd_data_sets 
函数生成的类还提供了mnist.train.next_batch函数,他将从所有的训练数据中读取一小部分作为训练数据batch 31. tf.trainable_variables返回的是需要训练的变量列表 tf.all_variables返回的是所有变量的列表 例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 import  tensorflow as  tf;    import  numpy as  np;    import  matplotlib.pyplot as  plt;       v = tf.Variable(tf.constant(0.0 , shape=[1 ], dtype=tf.float32), name='v' )   v1 = tf.Variable(tf.constant(5 , shape=[1 ], dtype=tf.float32), name='v1' )       global_step = tf.Variable(tf.constant(5 , shape=[1 ], dtype=tf.float32), name='global_step' , trainable=False )   ema = tf.train.ExponentialMovingAverage(0.99 , global_step)      for  ele1 in  tf.trainable_variables():      print  ele1.name   for  ele2 in  tf.all_variables():      print  ele2.name 
输出结果如下: 1 2 3 4 5 6 输出: v:0  v1:0  v:0  v1:0  global_step:0  
分析: 上面得到两个变量,后面的一个得到上三个变量,因为global_step在声明的时候说明不是训练变量,用来关键字trainable=False。