zoukankan      html  css  js  c++  java
  • tensorflow 1.0 学习:卷积层

    在tf1.0中,对卷积层重新进行了封装,比原来版本的卷积层有了很大的简化。

    一、旧版本(1.0以下)的卷积函数:tf.nn.conv2d

    conv2d(
        input,
        filter,
        strides,
        padding,
        use_cudnn_on_gpu=None,
        data_format=None,
        name=None
    )

    该函数定义在tensorflow/python/ops/gen_nn_ops.py

    参数:

      • input: 一个4维Tensor(N,H,W,C). 类型必须是以下几种类型之一: half, float32, float64.
      • filter: 卷积核. 类型和input必须相同,4维tensor, [filter_height, filter_width, in_channels, out_channels],如[5,5,3,32]
      • strides:  在input上切片采样时,每个方向上的滑窗步长,必须和format指定的维度同阶,如[1, 2, 2, 1]
      • padding: 指定边缘填充类型: "SAME", "VALID". SAME表示卷积后图片保持不变,VALID则会缩小。
      • use_cudnn_on_gpu: 可选项,bool型。表示是否在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: 操作名,可选.
    示例:
    conv1=tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME') 

    二、1.0版本中的卷积函数:tf.layers.conv2d

    conv2d(
        inputs,
        filters,
        kernel_size,
        strides=(1, 1),
        padding='valid',
        data_format='channels_last',
        dilation_rate=(1, 1),
        activation=None,
        use_bias=True,
        kernel_initializer=None,
        bias_initializer=tf.zeros_initializer(),
        kernel_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        trainable=True,
        name=None,
        reuse=None
    )

    定义在tensorflow/python/layers/convolutional.py.

    参数多了很多,但实际用起来,却更简单。

    • inputs: 输入数据,4维tensor.
    • filters: 卷积核个数。
    • kernel_size:卷积核大小,如【5,5】。如果长宽相等,也可以直接设置为一个数,如kernel_size=5
    • strides: 卷积过程中的滑动步长,默认为[1,1]. 也可以直接设置为一个数,如strides=2
    • padding: 边缘填充,'same' 和'valid‘选其一。默认为valid
    • data_format: 输入数据格式,默认为channels_last ,即 (batch, height, width, channels),也可以设置为channels_first 对应 (batch, channels, height, width).

    • dilation_rate: 微步长卷积,这个比较复杂一些,请百度.

    • activation: 激活函数.
    • use_bias: Boolean型,是否使用偏置项.
    • kernel_initializer: 卷积核的初始化器.
    • bias_initializer: 偏置项的初始化器,默认初始化为0.
    • kernel_regularizer: 卷积核化的正则化,可选.
    • bias_regularizer: 偏置项的正则化,可选.
    • activity_regularizer: 输出的正则化函数.
    • trainable: Boolean型,表明该层的参数是否参与训练。如果为真则变量加入到图集合中 GraphKeys.TRAINABLE_VARIABLES (see tf.Variable).
    • name: 层的名字.
    • reuse: Boolean型, 是否重复使用参数.
    示例:

    conv1=tf.layers.conv2d(
          inputs=x,
          filters=32,
          kernel_size=5,
          padding="same",
          activation=tf.nn.relu,
    kernel_initializer=tf.TruncatedNormal(stddev=0.01))

    更复杂一点的:

    conv1 = tf.layers.conv2d(batch_images, 
                             filters=64,
                             kernel_size=7,
                             strides=2,
                             activation=tf.nn.relu,
                             kernel_initializer=tf.TruncatedNormal(stddev=0.01)
                             bias_initializer=tf.Constant(0.1),
                             kernel_regularizer=tf.contrib.layers.l2_regularizer(0.003),
                             bias_regularizer=tf.contrib.layers.l2_regularizer(0.003),
                             name='conv1')


  • 相关阅读:
    在VS2008中使用WSE 3.0【转】
    .Net调用Java端带有WS-Security支持的Web Service各方案实战【转】
    Java与WCF交互(一):Java客户端调用WCF服务 【转】
    Java与WCF交互(二):WCF客户端调用Java web service【转】
    c#调用带有安全认证的java webservice
    利用Web Services开发分布式应用
    注册dll文件
    Oracle:"ORA-00942: 表或视图不存在"
    sql_server角色成员身份权限
    10013: 以一种访问权限不允许的方式做了一个访问套接字的尝试【WCF异常】
  • 原文地址:https://www.cnblogs.com/denny402/p/6932186.html
Copyright © 2011-2022 走看看