tensorflow学习之——了解这些tf函数,你就能看懂一个tensorflow网络(不定时更新tf函数)

每当构建一个神经网络,常用到tf下的几个函数,对其作用做个解析。

1. tf.random_normal()
我之前文章有提到:https://blog.csdn.net/c20081052/article/details/79939226

即从正态分布中输出随机值。 一般在生成隐藏层中的权重矩阵W和偏移向量b中会使用到。

参数:

  1. shape: 一维的张量,也是输出的张量。
  2. mean: 正态分布的均值。
  3. stddev: 正态分布的标准差。
  4. dtype: 输出的类型。
  5. seed: 一个整数,当设置之后,每次生成的随机数都一样。
  6. name: 操作的名字。

代码

?
1
2
3
4
5
6
7
a = tf.Variable(tf.random_normal([ 2 , 2 ],seed = 1 ))    #生成一个2X2的矩阵
b = tf.Variable(tf.truncated_normal([ 2 , 2 ],seed = 2 )) #生成一个2X2的矩阵
init = tf.global_variables_initializer()  #定义全局参数初始化操作
with tf.Session() as sess:              #启动tf的会话操作,此步后才开始真正运行
   sess.run(init)                        #运行初始化步骤
   print (sess.run(a))                    #运行a参数定义,并打印结果
   print (sess.run(b))

输出:

[[-0.81131822  1.48459876]
 [ 0.06532937 -2.44270396]]
[[-0.85811085 -0.19662298]
 [ 0.13895047 -1.22127688]]

指定seed之后,a的值不变,b的值也不变。

2.tf.Variable()

tf.Variable(initializer, name):initializer是初始化参数,可以有tf.random_normal,tf.constant,tf.constant等,name就是变量的名字,用法如下:

[python] view plain copy
  1. import tensorflow as tf;    
  2. import numpy as np;    
  3. import matplotlib.pyplot as plt;    
  4.     
  5. a1 = tf.Variable(tf.random_normal(shape=[2,3], mean=0, stddev=1), name='a1')  
  6. a2 = tf.Variable(tf.constant(1), name='a2')  
  7. a3 = tf.Variable(tf.ones(shape=[2,3]), name='a3')  
  8.   
  9. with tf.Session() as sess:  
  10.     sess.run(tf.initialize_all_variables())  
  11.     print sess.run(a1)  
  12.     print sess.run(a2)  
  13.     print sess.run(a3)  
输出:

[[ 0.76599932  0.99722123 -0.89361787]
 [ 0.19991693 -0.16539733  2.16605783]]
1
[[ 1.  1.  1.]
 [ 1.  1.  1.]]

3.tf.transpose()

这个函数常常用在对输入数据X做batchsize,width,height,channel的位置互换,tensorflow和caffe中输入数据的维度要求不一样。
举个例子: X=tf.transpose(X,perm = [0,2,1]),这个函数就是将tensor的对应的维数进行置换,将输入多维数据X的第“2”维移动到原来第“1”维位置处。
tensorflow 里面的 tensor是先从高维向低维算起的
比如:’x’ =    [1   2    3 ]
                            [4   5    6]  ]
                         [  [7   8    9 ]
                            [10 11 12 ]   ]

x是3维数据,维度为[2,2,3],即(第0维)2个面包片(绿色中括号), 每个绿色面包片中的蓝色矩阵是2行(第1维),3列(第2维)的。所以维度为[2,2,3]
而perm的意思就是将tensor对应的不同的维数之间变换
比如perm = [2,1,0],则原tensor=[2,2,3] 变为tensor = [3, 2,2],即将第0维的维度2放到第2维位置,原第2维的3放到第0维位置,全部倒过来
perm = [0,2,1],则新的tensor = [2,3,2], 后两维置换

tf.transpose(x, perm=[0, 2, 1]) ==>
[   [     [1   4]
          [2   5]
          [3   6]
   ]
   [      [7 10]   
          [8 11]   
          [9 12]
  ]   

4.tf.reshape()
这个函数常常用在对输入数据做维度尺寸变换,比如网络要求输入图像维度是28X28,那么这个函数就派上用场了。

tf.reshape(tensor, shape, name=None)
函数的作用是将tensor变换为参数shape的形式。其中shape为一个列表形式,特殊的一点是列表中可以存在-1。-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1。
根据shape如何变换矩阵。其实简单的想就是, reshape(t, shape) => reshape(t, [-1]) => reshape(t, shape), 首先将矩阵t变为一维矩阵,然后再对矩阵的形式更改就可以了。
比例:X=tf.reshape(X,[-1, 28])就是将X形状转变为N行,28列,其中N是系统自行帮你算出来的行数,程序中写着-1的用途就是这样。常见的例子会指定形状尺寸的:X=tf.reshape(X,[N, M])转为N行M列;

5.tf.matmul()
函数原型为:tf.matmul (matrix1,matrix2,transpose_matrix1=False,transpose_matrix2=False,a_is_spare=False,b_is_spare=False,name=None)
这个函数表示矩阵matrix1与矩阵matrix2进行相城,transpose_matrix1表示是否对矩阵1进行转置,默认为否;这个函数主要用在对输入的x与隐藏层的权重w相乘用;
形式是:W*X+b,然后对其做非线性变换;注意这个是矩阵相乘,在常规的运用中,习惯了vector是横向的,所以用X*W,需要保证X的列数=W的行数;
小小的举例:
# 2-D tensor `a`
a = tf.constant([
1, 2, 3, 4, 5, 6], shape=[2, 3]) => [[1. 2. 3.] #常数矩阵a是2行3列
                                                      [4. 5. 6.]]

#
2-D tensor `b`
b = tf.constant([
7, 8, 9, 10, 11, 12], shape=[3, 2]) => [[7. 8.] #常数矩阵b是3行2列
                                                         [9. 10.]
                                                           [11. 12.]]

c = tf.matmul(a, b) =>
[[58 64] #矩阵相乘后的c是2行2列
                        [139 154]]

6.tf.split

7.tf.variable_scope

8.tf.placeholder

9.tf.reduce_mean

10.tf.train.GradientDescentOptimizer().minimize

11.tf.global_variable_initializer

12.tf.nn.softmax_cross_entropy_with_logits()

13.tf.cast()

14.tf.equal()

      tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的

[python] view plain copy
  1. import tensorflow as tf  
  2. import numpy as np  
  3.   
  4. A = [[1,3,4,5,6]]  
  5. B = [[1,3,4,3,2]]  
  6.   
  7. with tf.Session() as sess:  
  8.     print(sess.run(tf.equal(A, B)))  
输出:

[[ True  True  True False False]]

15.tf.argmax()

16.tf.Session()

17.tf.run()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值