整理使用tensorflow过程中遇到的一些函数

tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None, name=None)

第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一

第二个参数filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维。

第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4。

第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,表示的是卷积的形式,是否考虑边界。"SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

 

tf.nn.bias_add(value,bias,name=None)将偏差项bias加到value上面。

 

tf.truncated_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32, seed=None, name=None)

截断的正态分布中输出随机值。生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。

 

tf.nn.max_pool(value, ksize, strides, padding, name=None)

第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。

第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。

第四个参数padding:和卷积类似,可以取'VALID' 或者'SAME'。

 

tf.reshape(tensor, shape, name=None)

函数的作用是将tensor变换为参数shape的形式。 其中shape为一个列表形式,特殊的一点是列表中可以存在-1。-1代表的含义是不用我们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1。(当然如果存在多个-1,就是一个存在多解的方程了)。

例子:

# tensor 't' is [1, 2, 3, 4, 5, 6, 7, 8, 9]

# tensor 't' has shape [9]

reshape(t, [3, 3]) ==> [[1, 2, 3],[4, 5, 6],[7, 8, 9]]

# tensor 't' is [[[1, 1], [2, 2]],

#                [[3, 3], [4, 4]]]

# tensor 't' has shape [2, 2, 2]

reshape(t, [2, 4]) ==> [[1, 1, 2, 2],

                        [3, 3, 4, 4]]

# tensor 't' is [[[1, 1, 1],

#                 [2, 2, 2]],

#                [[3, 3, 3],

#                 [4, 4, 4]],

#                [[5, 5, 5],

#                 [6, 6, 6]]]

# tensor 't' has shape [3, 2, 3]

# pass '[-1]' to flatten 't'

reshape(t, [-1]) ==> [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6]

# -1 can also be used to infer the shape

# -1 is inferred to be 9:

reshape(t, [2, -1]) ==> [[1, 1, 1, 2, 2, 2, 3, 3, 3],

                         [4, 4, 4, 5, 5, 5, 6, 6, 6]]

 

tf.cond(pred, fn1, fn2, name=None)

Return :either fn1() or fn2() based on the boolean predicate `pred`.(注意这里,也就是说'fnq'和‘fn2’是两个函数)

 

tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层。

Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。但在测试及验证中:每个神经元都要参加运算,但其输出要乘以概率p。

tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None,name=None) 

第一个参数x:指输入

第二个参数keep_prob: 设置神经元被选中的概率,在初始化时keep_prob是一个占位符,。

 

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

file:文件名/文件路径
arr:要存储的数组
allow_pickle:布尔值,允许使用Python pickles保存对象数组(可选参数,默认即可)
fix_imports:为了方便Pyhton2中读取Python3保存的数据(可选参数,默认即可)

保存一个数组到一个二进制的文件中,保存格式是.npy

 

dict.items()

Python字典(Dictionary)items()函数以列表返回可遍历的(键,值)元组数组。

 

猜你喜欢

转载自blog.csdn.net/qq_40806289/article/details/84995990