tensorflow学习(8):复现论文常用函数

这里总结一下博主在看源代码时所遇到的一些函数。
tensorflow虽然是一个很好的编程框架,但是学习起来也很费劲,因为其中的函数很多,函数的参数也很多,难度很大,为避免遗忘,特在此记录一些常用的重要函数以及其参数的相关用法。
本博文长期更新

1.os.path.join(p1,p2)
该函数是将路径p2添加到p1中,换句话说,p2是p1的分支,例如:
a = ‘F:\data’
b = os.path.join(a,‘img’)
#则b = ‘F:\data\img’

2.reshape(tensor,shape,name=None)
该函数是将张量tensor的维度转变成指定的shape,例如:
a = [np.arange(8)]
将a转换成2*4的向量,有两种写法:
a.reshape([2,4])
np.reshape(a,[2,4])
其中有一个参数可以写成-1,因为在变换过程中,总的元素个数不能改变,所以确定了其他的维度后,可以剩下唯一的参数填写-1。

3.tf.transpose(input, [dimension_1, dimenaion_2,…,dimension_n])
该函数主要适用于交换输入张量的不同维度用的,如果输入张量是二维,就相当是转置(可以用.T代表)。dimension_n是整数,如果张量是三维,就是用0,1,2来表示。这个列表里的每个数对应相应的维度。如果是[2,1,0],就把输入张量的第三维度和第一维度交换。例如:
a = [np.arange(8)]
b = a.reshape([2,2,2])
下面两种写法是等价的
c = tf.transpose(b,[2,1,0])
c = b.transpose([2,1,0])

4.net = slim.conv2d(net, 64, 7, 2, padding=‘VALID’, scope=‘conv_2’)
卷积层简化版:
第一个参数是net
第二个参数是filter深度(个数,64个)
第三个参数是filter的size(7*7)
第四个参数是stride(2,默认为1可以省略不写)

5.net = slim.max_pool2d(net, 2, padding=‘SAME’, scope=‘pool_3’)
max_pooling最大池化简化版
第一个参数是net
第二个参数是filter的size
第三个参数(此处已经省略,默认为1)是stride

6.slim.flatten(inputs,outputs_collections=None,scope=None)
该函数将输入扁平化但保留batch_size,假设第一维是batch,例如:

a=([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,27]],[[18,19,20],[21,22,23],[24,25,26]]])    #shape is (3,3,3)
b=slim.fatten(a) #此时b的shape是(3,9),保留了第一维的大小

7.net = slim.fully_connected(net, 512, scope=‘fc_33’)
全连接层的简写:
第一个参数是net
第二个参数是全连接层的节点个数

8.net = slim.dropout(net, keep_prob=keep_prob, is_training=is_training, scope=‘dropout_35’)
dropout的简写:
第一个参数为net
第二个参数为dropout的概率
第三个参数是是否训练,true or false
(一般有前两个参数和scope参数即可)

9.tf.stack(input, axis)
该函数是一个矩阵拼接函数,axis=0时实现行拼接,axis=1时实行列拼接(默认为0)。例如:
a = [1,2,3]
b = [4,5,6]
c = tf.stack([a,b],axis=0) #c的shape为(2,3)
d = tf.stack([a,b],axis=1) #d的shape为(3,2)

10.tf.clip_by_value(input, min, max):
该函数是用于矫正输入的,如果input<min,则输出min,如果input>max,则输出max,如果min<input<max,则输出input

11.tf.tile(input,multiples,name=None)
该函数用于需要张量扩展的场景,具体说来就是:
如果现有一个形状如[width, height]的张量,需要得到一个基于原张量的,形状如[batch_size,width,height]的张量,其中每一个batch的内容都和原张量一模一样。其中multiple和input的维度相同,表示在input的第几维度上重复几次,例如:

raw = tf.Variable(tf.random_normal(shape=(1, 3, 2)))
multi = tf.tile(raw, multiples=[2, 1, 1])   表示在第一维度上重复2次,其他维度不变

猜你喜欢

转载自blog.csdn.net/shanlepu6038/article/details/84621706
今日推荐