卷积神经网络中常用的TensorFlow函数总结 - hehejeson

卷积神经网络中常用的TensorFlow函数总结

1、tf.nn.relu(features, name = None)

这个函数的作用是计算激活函数 relu,即 max(features, 0)。将大于0的保持不变,小于0的数置为0。

import tensorflow as tf

a = tf.constant([-1.0, 2.0])
with tf.Session() as sess:
    b = tf.nn.relu(a)
    print sess.run(b)

# 以上程序输出的结果是:[0. ,2.]

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

在 TensorFlow 中添加一个卷积层,参数说明如下:

  • 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:可选字符串为 SAME、VALID。要使用的填充算法的类型。SAME允许卷积核移动到图像边缘,VALID不允许
  • use_cudnn_on_gpu:是否使用cudnn加速,默认为 True。
  • data_format:可选字符串为 NHWC、NCHW,默认为 NHWC。指定输入和输出数据的数据格式。使用默认格式 NHWC,数据按照以下顺序存储:[batch,in_height,in_width,in_channels]。或者,格式可以是 NCHW,数据存储顺序为:[batch,in_channels,in_height,in_width]。
  • name:操作的名称(可选)。

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

最大池化,参数说明如下:

  • value:形状为 [batch,height,width,channels] 和类型是 tf.float32 的四维张量。
  • ksize:长度 >=4 的整数列表。输入张量的每个维度的窗口大小,一般是[1, height, width, 1]
  • strides:长度 >=4 的整数列表。输入张量的每个维度的滑动窗口的步幅,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
  • padding:一个字符串,可以是 VALID 或 SAME。
  • data_format:一个字符串,支持 NHWC 和 NCHW。
  • name:操作的可选名称。

4、tf.argmax(input, axis=None, name=None, dimension=None)

此函数是对矩阵按行或列计算最大值,参数如下:

  • input:输入Tensor
  • axis:0表示按列,1表示按行
  • name:名称
  • dimension:和axis功能一样,默认axis取值优先。新加的字段
  • 返回:Tensor 行或列的最大值下标向量

5、tf.equal(a, b)

此函数比较等维度的a, b矩阵相应位置的元素是否相等,相等返回True,否则为False

返回:同维度的矩阵,元素值为True或False

6、tf.cast(x, dtype, name=None)

将x的数据格式转化成dtype.例如,原来x的数据格式是bool

那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以

7、tf.reduce_max(input_tensor, reduction_indices=None,keep_dims=False, name=None)

功能:求某维度的最大值

8、tf.reduce_mean(input_tensor, reduction_indices=None,keep_dims=False, name=None)

功能:求某维度的均值

参数1--input_tensor:待求值的tensor。

参数2--reduction_indices:在哪一维上求解。0表示按列,1表示按行

参数(3)(4)可忽略

例:

x = tf.constant([[1,2],[3,4]],"float")

tf.reduce_mean(x) = 2.5

tf.reduce_mean(x, 0) = [2, 3]

tf.reduce_mean(x, 1) = [1.5, 3.5]

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

从截断的正态分布中输出随机值

  • shape: 输出的张量的维度尺寸。
  • mean: 正态分布的均值。
  • stddev: 正态分布的标准差。
  • dtype: 输出的类型。
  • seed: 一个整数,当设置之后,每次生成的随机数都一样。
  • name: 操作的名字。
10、tf.random_normal(shape, mean=0.0, stddev=1.0,dtype=tf.float32, seed=None, name=None)

从标准正态分布中输出随机值

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

函数的作用是将tensor变换为参数shape的形式。其中shape为一个列表形式,特殊的一点是列表中可以存在-1。-1代表的含义是不用我

们自己指定这一维的大小,函数会自动计算,但列表中只能存在一个-1。(当然如果存在多个-1,就是一个存在多解的方程了)

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

为了减少过拟合,随机扔掉一些神经元,这些神经元不参与权重的更新和运算

参数:

  • x: 输入tensor
  • keep_prob:float类型,每个元素被保留下来的概率
  • noise_shape: 一个1维的int32张量,代表了随机产生“保留/丢弃”标志的shape。
  • seed: 整形变量,随机数种子。
  • name: 名字,没啥用。

发表于 2020-03-04 21:27 hehejeson 阅读(232) 评论(0) 编辑收藏举报