zoukankan      html  css  js  c++  java
  • tf.nn.conv2d 与tf.layers.conv2d的区别

    下面是二维卷积函数的样例和解释,一维或更高维的卷积函数与之类似

    1、tf.nn.conv2d

    tf.nn.conv2d(input,  # 张量输入
                filter, # 卷积核参数
                strides, # 步长参数
                padding, # 卷积方式
                use_cudnn_on_gpu=None, # 是否是gpu加速
                data_format=None,  # 数据格式,与步长参数配合,决定移动方式
                name=None): # 名字,用于tensorboard图形显示时使用

    关键参数如下

    input.shape=[batch, in_height, in_width, in_channels]

    filter.shape= [filter_height, filter_width, in_channels, out_channels ]

    strides = [1, stride, stride, 1].
    必须满足strides[0] = strides[3] = 1.
    在大多数情况下 strides = [1, stride, stride, 1].

    2. tf.layers.conv2d

    这是tensorflow 更高一级的api,和keras.layer类似

    conv2d(inputs, # 输入的张量
       filters, # 卷积过滤器的数量
        kernel_size, # 卷积窗口的大小
        strides=(1, 1), # 卷积步长
        padding='valid', # 可选,默认为 valid,padding 的模式,有 valid 和 same 两种,大小写不区分。
        data_format='channels_last', # 可选,默认 channels_last,分为 channels_last 和 channels_first 两种模式,代表了输入数据的维度类型,如果是 channels_last,那么输入数据的 shape 为 (batch, height, width, channels),如果是 channels_first,那么输入数据的 shape 为 (batch, channels, height, width)
        dilation_rate=(1, 1),# 可选,默认为 (1, 1),卷积的扩张率,如当扩张率为 2 时,卷积核内部就会有边距,3×3 的卷积核就会变成 5×5。
        activation=None, # 可选,默认为 None,如果为 None 则是线性激活。
        use_bias=True, # 可选,默认为 True,是否使用偏置。
        kernel_initializer=None, # 可选,默认为 None,即权重的初始化方法,如果为 None,则使用默认的 Xavier 初始化方法。
        bias_initializer=<tensorflow.python.ops.init_ops.Zeros object at 0x000002596A1FD898>, # 可选,默认为零值初始化,即偏置的初始化方法。
        kernel_regularizer=None,# 可选,默认为 None,施加在权重上的正则项。
        bias_regularizer=None, # 可选,默认为 None,施加在偏置上的正则项。
        activity_regularizer=None, # 可选,默认为 None,施加在输出上的正则项。
        kernel_constraint=None, # 可选,默认为 None,施加在权重上的约束项。
        bias_constraint=None, # 可选,默认为 None,施加在偏置上的约束项。
        trainable=True, # 可选,默认为 True,布尔类型,如果为 True,则将变量添加到 GraphKeys.TRAINABLE_VARIABLES 中。
        name=None, # 可选,默认为 None,卷积层的名称。
        reuse=None) # 可选,默认为 None,布尔类型,如果为 True,那么如果 name 相同时,会重复利用。

    input 和tf.nn.conv2d 一样,必须是4维张量,input.shape=[batch, in_height, in_width, in_channels]
    filters:整数,表示输出空间的维数(即卷积过滤器的数量),对应于tf.nn.conv2d中的out_channels
    kernel_size:一个整数,或者包含了两个整数的元组/队列,表示卷积窗的高和宽。如果是一个整数,则宽高相等。 对应于tf.nn.conv2d中的(filter_height, filter_width)

     

    2. keras.layers.conv2d

    keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), 
      padding='valid',
      data_format=None,
      dilation_rate=(1, 1),
      activation=None,
      use_bias=True,
      kernel_initializer='glorot_uniform',
      bias_initializer='zeros',
      kernel_regularizer=None,
      bias_regularizer=None,
      activity_regularizer=None,
      kernel_constraint=None,
      bias_constraint=None)

    filters:卷积核的数目(即输出的维度)

    kernel_size:单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。如为单个整数,则表示在各个空间维度的相同长度。

    strides:单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。任何不为1的strides均与任何不为1的dilation_rate均不兼容

    padding:补0策略,为“valid”, “same” 。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。

    activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)

    dilation_rate:单个整数或由两个个整数构成的list/tuple,指定dilated convolution中的膨胀比例。任何不为1的dilation_rate均与任何不为1的strides均不兼容。

    data_format:字符串,“channels_first”或“channels_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channels_last”。

    use_bias:布尔值,是否使用偏置项

    kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers

    bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers

    kernel_regularizer:施加在权重上的正则项,为Regularizer对象

    bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象

    activity_regularizer:施加在输出上的正则项,为Regularizer对象

    kernel_constraints:施加在权重上的约束项,为Constraints对象

    bias_constraints:施加在偏置上的约束项,为Constraints对象

  • 相关阅读:
    对于现有的无人零售技术的调研
    HTTP协议学习
    通过spring提供的DeferredResult实现长轮询服务端推送消息
    Optional int parameter 'topicId' is present but cannot be translated into a null value
    fastJson泛型如何转换
    @RequestParam 的简单用法
    Docker学习记录
    待研究
    Postgresql查询时不区分大小写
    认证授权系统代码结构
  • 原文地址:https://www.cnblogs.com/fclbky/p/12635902.html
Copyright © 2011-2022 走看看