基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层
来源:互联网 发布:淘宝商家信用卡费率 编辑:程序博客网 时间:2024/05/15 11:30
本文来自CSDN博客:http://blog.csdn.net/niuwei22007/article/details/49366745
上一篇介绍了基础核心层,就是用来构建普通网络的基础部件。这一篇主要介绍的是卷积层,主要用于构建卷积神经网络等需要用到卷积操作的神经网络。卷积操作(可以参看博文卷积算子计算方法-卷积操作)的优点就是可以增强原信号特征,增强对原信号位移、形变之后的识别能力,有效降低噪音等。而卷积神经网络是目前来说对图像识别的最好工具,因为它可以有效识别有位移、形变等的图像。下面来看下卷基层都有哪些结构。
一、Convolution1D
keras.layers.convolutional.Convolution1D(nb_filter,filter_length, init='uniform', activation='linear', weights=None, border_mode='valid', subsample_length=1, W_regularizer=None, b_regularizer=None, W_constraint=None, b_constraint=None, input_dim=None, input_length=None)
该卷积操作用于过滤一维输入的相邻元素。当把该层作为模型的第一层时,要么给参数input_dim传值(int类型,比如128代表128维的向量),要么给input_shape传值(整数元组,比如(10,128)代表10个128维的向量)。
inputshape: 3维 tensor(nb_samples, steps,input_dim)
outputshape: 3维 tensor(nb_samples, steps,nb_filter) .steps的值可能会随着边缘填充0元素而产生变化。
参数:
- nb_filter : 卷积核的数量,也是输出的一个维度。
- filter_length : 每个过滤器的长度(因为是一维的,所以只有长度)。
- init : 初始化权值的函数名称或Theano function。可以使用Keras内置的(内置初始化权值函数见这里),也可以传递自己编写的Theano function。如果不给weights传递参数时,则该参数必须指明。
- activation : 激活函数名称或者Theano function。可以使用Keras内置的(内置激活函数见这里),也可以是传递自己编写的Theano function。如果不明确指定,那么将没有激活函数会被应用。
- weights :用于初始化权值的numpy arrays组成的list。这个List至少有1个元素,其shape为(input_dim, output_dim)。(如果指定init了,那么weights可以赋值None)
- border_mode: “valid”或”full”。valid模式只输出原图像经过卷积操作的结果;而full模式则是如果原图像与卷积核不匹配,有剩余时,通过填充0而凑整进行卷积运算。比如原图5*5,卷积算子2*2,依次匹配的话会有一列数据剩余。如果不计算剩余部分的数据就是valid模式;如果把原图通过填充0 的方式扩展为6*6的图像再计算,那就是full模式。官方简单解释看这里,也可以看我的博文卷积操作。
- subsample_length: factor by which to subsampleoutput。
- W_regularizer:权值的规则化项,必须传入一个WeightRegularizer的实例(比如L1或L2规则化项,详细的内置规则化见这里)。
- b_regularizer:偏置值的规则化项,必须传入一个WeightRegularizer的实例(比如L1或L2规则化项,详细的内置规则化见这里)。
- activity_regularizer:网络输出的规则化项,必须传入一个ActivityRegularizer的实例(详细的内置规则化见这里)。
- W_constraint:权值约束,必须传入一个constraints的实例(详细的约束限制见这里)。
- b_constraint:偏置约束,必须传入一个constraints的实例(详细的约束限制见这里)。
- input_dim:输入数据的维度。这个参数和input_shape至少要提供一个传值。
- input_length:输入序列的长度。This argument is required ifyou are going to connectFlatten thenDense layers upstream (without it,the shape of the dense outputs cannot be computed)
二、Convolution2D
keras.layers.convolutional.Convolution2D(nb_filter,nb_row, nb_col, init='glorot_uniform', activation='linear', weights=None, border_mode='valid', subsample=(1, 1), W_regularizer=None, b_regularizer=None, W_constraint=None)
这个是CNN常用的方法。这个卷积操作是通过一个2维窗口的卷积核进行过滤。当把该层当做模型的第一层时,需要提供参数input_shape,比如input_shape=(3, 128, 128)表示128*128的RGB(3通道,看以理解成3张128*128的图片叠加而成的)图片。
inputshape: 4维 tensor(nb_samples, channels,rows, cols)
outputshape: 4维 tensor(nb_samples, nb_filter,rows, cols). rows,cols的值可能会随着边缘填充0元素而产生变化。
参数:
- nb_filter : 过滤器的数量。
- nb_row : 卷积核的行数。
- nb_col: 卷积核的列数。
- init : 初始化权值的函数名称或Theano function。可以使用Keras内置的(内置初始化权值函数见这里),也可以传递自己编写的Theano function。如果不给weights传递参数时,则该参数必须指明。
- activation : 激活函数名称或者Theano function。可以使用Keras内置的(内置激活函数见这里),也可以是传递自己编写的Theano function。如果不明确指定,那么将没有激活函数会被应用。
- weights :用于初始化权值的numpy arrays组成的list。这个List至少有1个元素,其shape为(input_dim, output_dim)。(如果指定init了,那么weights可以赋值None)
- border_mode: “valid”或”full”。valid模式只输出原图像经过卷积操作的结果;而full模式则是如果原图像与卷积核不匹配,有剩余时,通过填充0而凑整进行卷积运算。比如原图5*5,卷积算子2*2,依次匹配的话会有一列数据剩余。如果不计算剩余部分的数据就是valid模式;如果把原图通过填充0 的方式扩展为6*6的图像再计算,那就是full模式。官方简单解释看这里,也可以看我的博文卷积操作。
- subsample_length: factor by which to subsampleoutput。
- W_regularizer:权值的规则化项,必须传入一个WeightRegularizer的实例(比如L1或L2规则化项,详细的内置规则化见这里)。
- b_regularizer:偏置值的规则化项,必须传入一个WeightRegularizer的实例(比如L1或L2规则化项,详细的内置规则化见这里)。
- activity_regularizer:网络输出的规则化项,必须传入一个ActivityRegularizer的实例(详细的内置规则化见这里)。
- W_constraint:权值约束,必须传入一个constraints的实例(详细的约束限制见这里)。
- b_constraint:偏置约束,必须传入一个constraints的实例(详细的约束限制见这里)。
三、MaxPooling1D类
layers.convolutional.MaxPooling1D(pool_length=2, stride=None, ignore_border=True)
最大池化操作,也就是常说的下采样。因为这个是对于1维输入进行操作的,因此下采样因子就只有一个长度。
inputshape: 3维 tensor(nb_samples, steps, dim)
outputshape: 3维 tensor(nb_samples,downsampled_steps, dim)
参数:
- pool_length : 下采样因子的长度。比如对输入进行length=2的下采样操作的话,结果就剩下了输入的一半。
- stride: int或者None。
- ignore_border: boolean,是否忽略掉边缘部分数据。
四、MaxPooling2D类
keras.layers.convolutional.MaxPooling2D(pool_size=(2, 2), ignore_border=True)
这个下采样的采样因子是2维的。
inputshape: 4维 tensor(nb_samples, stack_size,nb_row, nb_col)
outputshape: 4维 tensor(nb_samples, stack_size,new_nb_row, new_nb_col)
参数:
- pool_size : 下采样因子的shape。比如对输入进行size为(2,2)的下采样操作的话,结果就剩下了输入的每一维度的一半,即总的结果是原输入的四分之一。
- ignore_border: boolean。比如原输入是(5,5),pool_size=(2,2),如果ignore_border=True的话,那么生成的结果将会是(2,2);如果ignore_border=False时,生成的结果将会是(3,3)。
参考资料:
- 官方教程
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-12-核心层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-14-递归层
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-02-Example
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-03-优化器
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-06-激活函数
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-07-初始化权值
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-08-规则化(规格化)
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-09-约束限制
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-10-回调
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-11-数据集
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-15-Advanced Activation Layers
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-16-Normalization
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-17-Embedding Layers
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-18-Noise Layers
- ios深度解析之Swift(函数)
- java Exception 基础
- linux下用vim写基本的c程序
- HDOJ 题目4334 Trouble(hash)
- android eclipse的xml字体大小
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-13-卷积层
- Android基础入门教程——8.3.5 Paint API之—— Xfermode与PorterDuff详解(二)
- ongl表达式的应用
- Spark源码—Job Runtime
- unzip解压中文名称文件
- 什么是指针?如何理解指针?指针又是如何定义与使用的?
- [BZOJ1040][ZJOI2008]骑士
- loadrunner脚本录制为空的解决方法
- RTEMS-BBB(九):UART扩展:编程