zoukankan      html  css  js  c++  java
  • 卷积神经网络中常用的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: 名字,没啥用。
     
     

  • 相关阅读:
    过程作为黑箱抽象——《计算机程序的构造和解释》
    过程与它们所产生的计算——《计算机程序的构造和解释》
    重构手法(四)之在对象之间搬移特性
    重构手法(三)之简化条件表达式
    重构手法(二)之简化函数调用
    重构手法(一)之重新组织函数
    代码的坏味道
    泛型算法(二十三)之排列算法
    泛型算法(二十二)之集合操作算法
    泛型算法(二十一)之比较算法
  • 原文地址:https://www.cnblogs.com/hehejeson/p/12409311.html
Copyright © 2011-2022 走看看