zoukankan      html  css  js  c++  java
  • Keras卷积+池化层学习

    转自:https://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/

    https://keras-cn.readthedocs.io/en/latest/layers/pooling_layer/

    1.con1D

    keras.layers.convolutional.Conv1D(filters, kernel_size, strides=1, padding='valid',
    dilation_rate=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)

    一维卷积层(即时域卷积),用以在一维输入信号上进行邻域滤波。当使用该层作为首层时,需要提供关键字参数input_shape。例如(10,128)代表一个长为10的序列,序列中每个信号为128向量。而(None, 128)代表变长的128维向量序列。

    该层生成将输入信号与卷积核按照单一的空域(或时域)方向进行卷积。如果use_bias=True,则还会加上一个偏置项,若activation不为None,则输出为经过激活函数的输出。

    常用:

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

    • kernel_size:整数或由单个整数构成的list/tuple,卷积核的空域或时域窗长度

    • strides:整数或由单个整数构成的list/tuple,为卷积的步长。任何不为1的strides均与任何不为1的dilation_rate均不兼容

    • padding:补0策略,为“valid”, “same” 
    • activation:激活函数,为预定义的激活函数名。如果不指定该参数,将不会使用任何激活函数
    • use_bias:布尔值,是否使用偏置项
    • kernel_regularizer:施加在权重上的正则项

    *可以将Convolution1D看作Convolution2D的快捷版,对例子中(10,32)的信号进行1D卷积相当于对其进行卷积核为(filter_length, 32)的2D卷积。 

    //以上这一句涉及到在1D的情况下的卷积计算过程。

    2.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)

    二维卷积层,即对图像的空域卷积。该层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (128,128,3)代表128*128的彩色RGB图像(data_format='channels_last'

    //1D多用来对序列数据处理,比如自然语言和语音。2D多用来做图像。

    • 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)

    • 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”。

    3.最大池化1D层

    keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')
    • pool_size:整数,池化窗口大小

    • strides:整数或None,下采样因子,例如设2将会使得输出shape为输入的一半,若为None则默认值为pool_size。

    • padding:‘valid’或者‘same’

    4.最大池化2D层

    keras.layers.pooling.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)
    • pool_size:整数或长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(2,2)将使图片在两个维度上均变为原长的一半。为整数意为各个维度值相同且为该数字。

    • strides:整数或长为2的整数tuple,或者None,步长值。

    • border_mode:‘valid’或者‘same’

    5.flatten展平

    keras.layers.Flatten(data_format=None)

    data_format:一个字符串,其值为 channels_last(默认值)或者 channels_first。

    model = Sequential()
    model.add(Conv2D(64, (3, 3),
                     input_shape=(3, 32, 32), padding='same',))
    # 现在:model.output_shape == (None, 64, 32, 32)
    
    model.add(Flatten())
    # 现在:model.output_shape == (None, 65536)

    //给的这个例子输入维度中第一维是通道。

     6.Input

    keras.engine.input_layer.Input()
    • shape: 一个尺寸元组(整数),不包含批量大小。 例如,shape=(32,) 表明期望的输入是按批次的 32 维向量。
    • batch_shape: 一个尺寸元组(整数),包含批量大小。 例如,batch_shape=(10, 32) 表明期望的输入是 10 个 32 维向量。 batch_shape=(None, 32) 表明任意批次大小的 32 维向量。
    • name: 一个可选的层的名称的字符串。 在一个模型中应该是唯一的(不可以重用一个名字两次)。 如未提供,将自动生成。
    • dtype: 输入所期望的数据类型,字符串表示 (float32float64int32...)
    • sparse: 一个布尔值,指明需要创建的占位符是否是稀疏的。
    • tensor: 可选的可封装到 Input 层的现有张量。 如果设定了,那么这个层将不会创建占位符张量。
  • 相关阅读:
    向内的寻找
    了解潜意识
    NOI2014 Day1
    NOI2011 Day1
    NOI2012 Day2
    NOI2012 Day1
    NOI2013 Day2
    NOI2013 Day1
    拉格朗日乘数法
    NOI2015 Day2
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/11058421.html
Copyright © 2011-2022 走看看