专栏首页李智的专栏Deep learning基于theano的keras学习笔记(3)-网络层

Deep learning基于theano的keras学习笔记(3)-网络层

1. 常用层

1.1 Dense层

keras.layers.core.Dense(output_dim, init='glorot_uniform', activation='linear', weights=None, W_regularizer=None, 
                        b_regularizer=None, activity_regularizer=None, W_constraint=None,b_constraint=None, bias=True, 
                        input_dim=None)

1.2 Activation层

keras.layers.core.Activation(activation)

1.3 Dropout层 为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时随机断开一定百分比(p)的输入神经元连接,Dropout层用于防止过拟合。

keras.layers.core.Dropout(p)#p:0~1的浮点数,控制需要断开的链接的比例

1.4 SpatialDropout2D(3D)层 与Dropout的作用类似,但它断开的是整个2D(3D)特征图,而不是单个神经元。如果一张特征图的相邻像素之间有很强的相关性(通常发生在低层的卷积层中),那么普通的dropout无法正则化其输出,否则就会导致明显的学习率下降。这种情况下,SpatialDropout2D(3D)能够帮助提高特征图之间的独立性,应该用其取代普通的Dropout

keras.layers.core.SpatialDropout2D(p, dim_ordering='default')
#p:0~1的浮点数,控制需要断开的链接的比例;dim_ordering:'th'或'tf'
#默认为~/.keras/keras.json配置的image_dim_ordering值

1.5 Flatten层 Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。

keras.layers.core.Flatten()

1.6 Reshape层

Reshape层用来将输入shape转换为特定的shape
keras.layers.core.Reshape(target_shape)
#target_shape:目标shape,为整数的tuple,不包含样本数目的维度(batch大小)

1.7 Permute层

Permute层将输入的维度按照给定模式进行重排,例如,当需要将RNN和CNN网络连接时,可能会用到该层。
keras.layers.core.Permute(dims)
#dims:整数tuple,指定重排的模式,不包含样本数的维度。重拍模式的下标从1开始。
#例如(2,1)代表将输入的第二个维度重拍到输出的第一个维度,而将输入的第一个维度重排到第二个维度

1.8 RepeatVector层 RepeatVector层将输入重复n次

keras.layers.core.RepeatVector(n)

1.9 Merge层 Merge层根据给定的模式,将一个张量列表中的若干张量合并为一个单独的张量

keras.engine.topology.Merge(layers=None, mode='sum', concat_axis=-1, dot_axes=-1,output_shape=None, 
                            node_indices=None, tensor_indices=None, name=None)
#mode方式有“sum”,“mul”,“concat”,“ave”,“cos”,“dot”

1.10 Lambda层 本函数用以对上一层的输出施以任何Theano/TensorFlow表达式

keras.layers.core.Lambda(function, output_shape=None, arguments={})
#例子:model.add(Lambda(lambda x: x ** 2))

1.11 ActivityRegularizer层 经过本层的数据不会有任何变化,但会基于其激活值更新损失函数值

keras.layers.core.ActivityRegularization(l1=0.0, l2=0.0)
#l1:1范数正则因子(正浮点数);l2:2范数正则因子(正浮点数)

1.12 Masking层 使用给定的值对输入的序列信号进行“屏蔽”,用以定位需要跳过的时间步

keras.layers.core.Masking(mask_value=0.0)

#考虑输入数据x是一个形如(samples,timesteps,features)的张量,现将其送入LSTM层。
#因为你缺少时间步为3和5的信号,所以你希望将其掩盖。这时候应该:赋值x[:,3,:] = 0.,x[:,5,:] = 0.
#在LSTM层之前插入mask_value=0.的Masking层
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(32))

1.13 Highway层

Highway层建立全连接的Highway网络,这是LSTM在前馈神经网络
keras.layers.core.Highway(init='glorot_uniform', transform_bias=-2, activation='linear', weights=None, 
                        W_regularizer=None, b_regularizer=None, activity_regularizer=None, 
                        W_constraint=None, b_constraint=None, bias=True, input_dim=None)

1.14 MaxoutDense层 MaxoutDense层以nb_features个Dense(input_dim,output_dim)线性层的输出的最大值为输出。MaxoutDense可对输入学习出一个凸的、分段线性的激活函数。


2. 卷积层

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

keras.layers.convolutional.Convolution1D(nb_filter, filter_length, init='uniform',

                                        activation='linear', weights=None, border_mode='valid', 
                                        subsample_length=1, W_constraint=None,  b_constraint=None, 
                                        bias=True, input_dim=None, input_length=None)

2.2 AtrousConvolution1D层 AtrousConvolution1D层用于对1D信号进行滤波,是膨胀/带孔洞的卷积。当使用该层作为首层时,需要提供关键字参数input_diminput_shape。例如input_dim=128长为128的向量序列输入,而input_shape=(10,128)代表一个长为10的128向量序列

keras.layers.convolutional.AtrousConvolution1D(nb_filter, filter_length, init='uniform', activation='linear', 
                                                weights=None, border_mode='valid', subsample_length=1, 
                                                activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)

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

keras.layers.convolutional.Convolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform', 
                                        activation='linear', weights=None, border_mode='valid',
                                        subsample=(1, 1), dim_ordering='th', W_regularizer=None, 
                                        b_regularizer=None, activity_regularizer=None, W_constraint=None, 
                                        b_constraint=None, bias=True)

2.4 AtrousConvolution2D层 该层对二维输入进行Atrous卷积,也即膨胀卷积或带孔洞的卷积。当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (3,128,128)代表128*128的彩色RGB图像

keras.layers.convolutional.AtrousConvolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform', 
                                                activation='linear', weights=None, border_mode='valid', 
                                                subsample=(1, 1), atrous_rate=(1, 1), dim_ordering='th', 
                                                W_regularizer=None, b_regularizer=None, activity_regularizer=None, 
                                                W_constraint=None, b_constraint=None, bias=True)

2.5 SeparableConvolution2D层

该层是对2D输入的可分离卷积。可分离卷积首先按深度方向进行卷积(对每个输入通道分别卷积),然后逐点进行卷积,将上一步的卷积结果混合到输出通道中。参数`depth_multiplier`控制了在`depthwise`卷积(第一步)的过程中,每个输入通道信号产生多少个输出通道。直观来说,可分离卷积可以看做讲一个卷积核分解为两个小的卷积核,或看作`Inception`模块的一种极端情况。当使用该层作为第一层时,应提供`input_shape`参数。例如`input_shape = (3,128,128)`代表128*128的彩色RGB图像
keras.layers.convolutional.SeparableConvolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform', 
                                                activation='linear', weights=None, border_mode='valid', 
                                                subsample=(1, 1), depth_multiplier=1, dim_ordering='default', 
                                                depthwise_regularizer=None, pointwise_regularizer=None,
                                                 b_regularizer=None,activity_regularizer=None, epthwise_constraint=None, 
                                                 pointwise_constraint=None, b_constraint=None, bias=True)

2.6 Deconvolution2D层

该层是卷积操作的转置(反卷积)。需要反卷积的情况通常发生在用户想要对一个普通卷积的结果做反方向的变换。例如,将具有该卷积层输出shape的tensor转换为具有该卷积层输入shape的tensor。,同时保留与卷积层兼容的连接模式。当使用该层作为第一层时,应提供`input_shape`参数。例如`input_shape = (3,128,128)`代表128*128的彩色RGB图像
keras.layers.convolutional.Deconvolution2D(nb_filter, nb_row, nb_col, output_shape, init='glorot_uniform', 
                                            activation='linear', weights=None, border_mode='valid', 
                                            b_regularizer=None, ctivity_regularizer=None, 
                                            W_constraint=None, b_constraint=None, bias=True)

2.7 Convolution3D层 三维卷积对三维的输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (3,10,128,128)代表对10帧128*128的彩色RGB图像进行卷积。目前,该层仅仅在使用Theano作为后端时可用

keras.layers.convolutional.Convolution3D(nb_filter, kernel_dim1, kernel_dim2, kernel_dim3, init='glorot_uniform', 
                                        activation='linear', weights=None, border_mode='valid', 
                                        subsample=(1, 1, 1), dim_ordering='th', W_regularizer=None, 
                                        b_regularizer=None, activity_regularizer=None, W_constraint=None,
                                        b_constraint=None, bias=True)

2.8 Cropping层

#Cropping1D层
keras.layers.convolutional.Cropping1D(cropping=(1, 1))
#在时间轴(axis1)上对1D输入(即时间序列)进行裁剪

#Cropping2D层
keras.layers.convolutional.Cropping2D(cropping=((0, 0), (0, 0)), dim_ordering='default')
#对2D输入(图像)进行裁剪,将在空域维度,即宽和高的方向上裁剪

#Cropping3D层
keras.layers.convolutional.Cropping3D(cropping=((1, 1), (1, 1), (1, 1)), dim_ordering='default')
#对2D输入(图像)进行裁剪

2.9 UpSampling层

#UpSampling1D层
keras.layers.convolutional.UpSampling1D(length=2)
#在时间轴上,将每个时间步重复length次

#UpSampling2D层
keras.layers.convolutional.UpSampling2D(size=(2, 2), dim_ordering='th')
#将数据的行和列分别重复size[0]和size[1]次

UpSampling3D层
keras.layers.convolutional.UpSampling3D(size=(2, 2, 2), dim_ordering='th')
#将数据的三个维度上分别重复size[0]、size[1]和ize[2]次
#本层目前只能在使用Theano为后端时可用

2.10 ZeroPadding层

#ZeroPadding1D层
keras.layers.convolutional.ZeroPadding1D(padding=1)
#对1D输入的首尾端(如时域序列)填充0,以控制卷积以后向量的长度

#ZeroPadding2D层
keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='th')
#对2D输入(如图片)的边界填充0,以控制卷积以后特征图的大小

#ZeroPadding3D层
keras.layers.convolutional.ZeroPadding3D(padding=(1, 1, 1), dim_ordering='th')
#将数据的三个维度上填充0
#本层目前只能在使用Theano为后端时可用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pandas数据清洗,排序,索引设置,数据选取

    df.isnull() df的空值为True df.notnull() df的非空值为True

    李智
  • Emmet插件使用教程

    李智
  • 【SPA大赛】分享推荐类大数据的相关经验

    本人很幸运在刚刚结束的京东算法大赛中取得第四的成绩,腾讯广告点击大赛目前排名前五十,在比赛过程中学到了许多知识,同时也有一些经验分享给大家。后面也有队友李强在腾...

    李智
  • IT大咖撩段子

    ❤ 程序员常说的几句话 ? ? ? ? ? ? ? ?

    IT大咖说
  • Linux 内存管理

    Linux内存清理:绝大多数情况下都不需要此操作,因为cache的内存在需要的时候是可以自动释放的~

    Alfred Zhao
  • Kafka “高吞吐” 之顺序访问与零拷贝

    上一篇所说的micr-batch 其实主要是针对producer 来实现的,Kafka整体吞吐量高可不只是依赖于micr-batch这一点,还有broker端及...

    邹志全
  • 全球经济大洗牌,这款产品如何脱颖而出,3天内造福10亿人?

    2020年初,新冠肺炎疫情爆发,全民进入抗“疫”时期。 在国家出台各种防疫政策,要求大家出入特定场所需登记个人信息时,为解决大家反复填写信息采集表的繁琐问题,...

    腾讯大讲堂
  • 3.8 VR扫描:全球VR头显去年装机量达1310万套;Insta360 ONE相机入驻全球苹果官方直营店

    VRPinea
  • 4.29看点 | 行业携手共治,中小网站安全防护的春天到来

    导读:4.29首都网络安全日期间,网络事件预警与防控技术国家工程实验室联合阿里云和安恒信息,推出了“中小网站安全防护系统”,为广大中小网站提供免费安全防护;安恒...

    安恒信息
  • ol4中实现只能查看用户权限所在区的地图

    我们经常会碰到这样的需求:北京的用户只能查看北京的地图,天津的只能看天津的地图……这里面涉及到了一个地图的访问权限问题,要实现这样的功能如果用服务+过滤的方式比...

    lzugis

扫码关注云+社区

领取腾讯云代金券