【转载】Keras.layers各种层介绍 - 心冰之海 - bk园 https://www.cnblogs.com/lhxsoft/p/13534667.html

文章导航

  • 一、网络层
    • 1、常用网络层
      • 1.1、Dense层(全连接层)
      • 1.2、Activation层 ,激活层
      • 1.3、dropout层,“随机丢弃层”
      • 1.4、Flatten层,“压平层”
      • 1.5、Reshape层,“重塑张量形状 层”
    • 2、卷积层Convolutional
      • 2.1、Conv1D层,一维卷积层
    • 3、池化层Pooling
      • 3.1、MaxPooling1D层 最大值池化
      • 3.2、AveragePooling1D层,平均值池化
    • 4、循环层Recurrent
      • 2.4.3、LSTM层

本文章向大家介绍KerasKeras.layers各种层介绍,主要包括Keras,Keras.layers各种层介绍使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、网络层

keras的层主要包括:

常用层(Core)、卷积层(Convolutional)、池化层(Pooling)、局部连接层(dense)、递归层(Recurrent)、嵌入层( Embedding)、高级激活层、规范层、噪声层、包装层,当然也可以编写自己的层。

对于层的操作

layer.get_weights() #返回该层的权重(numpy array)
layer.set_weights(weights)#将权重加载到该层
config = layer.get_config()#保存该层的配置
layer = layer_from_config(config)#加载一个配置到该层#如果层仅有一个计算节点(即该层不是共享层),则可以通过下列方法获得输入张量、输出张量、输入数据的形状和输出数据的形状:
layer.input
layer.output
layer.input_shape
layer.output_shape#如果该层有多个计算节点。可以使用下面的方法
layer.get_input_at(node_index)
layer.get_output_at(node_index)
layer.get_input_shape_at(node_index)
layer.get_output_shape_at(node_index)

1、常用网络层

1.1、Dense层(全连接层)

keras.layers.core.Dense(units,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)

参数:

  • units:大于0的整数,代表该层的输出维度。

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

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

  • bias_initializer:偏置向量初始化方法,为预定义初始化方法名的字符串,或用于初始化偏置向量的初始化器。

  • regularizer:正则项,kernel为权重的、bias为偏执的,activity为输出的

  • constraints:约束项,kernel为权重的,bias为偏执的。

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

  • input_dim:该层输入的维度

本层实现的运算为
output=activation(dot(input,kernel)+bias)
个人理解,即:
输出 = 激活函数【(输入 点乘 * 卷积核 )+偏置】

1.2、Activation层 ,激活层

keras.layers.core.Activation(activation)

激活层对一个层的输出,施加激活函数(sigmod, relu 等等)

参数:

  • activation:将要使用的激活函数,为预定义激活函数名或一个Tensorflow/Theano的函数。参考激活函数

输入shape:任意,当使用激活层作为第一层时,要指定input_shape
输出shape:与输入shape相同

1.3、dropout层,“随机丢弃层”

keras.layers.core.Dropout(rate, noise_shape=None, seed=None)

为输入数据施加Dropout操作。
Dropout将在训练过程中每次更新参数时按一定概率(rate) 随机断开输入神经元,Dropout层用于防止过拟合

参数

  • rate:0~1的浮点数,控制需要断开的神经元的比例

  • noise_shape:整数张量,为将要应用在输入上的二值Dropout mask的shape,例如你的输入为(batch_size, timesteps, features),并且你希望在各个时间步上的Dropout mask都相同,则可传入noise_shape=(batch_size, 1, features)。

  • seed:整数,使用的随机数种子

个人理解,注意:使用的随机数种子seed固定,则每次进行的“随机丢弃神经元”的操作也是固定的

1.4、Flatten层,“压平层”

keras.layers.core.Flatten()

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

例子:

model = Sequential()
model.add(Convolution2D(64, 3, 3,border_mode='same',input_shape=(3, 32, 32)))
# now: model.output_shape == (None, 64, 32, 32)model.add(Flatten())
# now: model.output_shape == (None, 65536)

1.5、Reshape层,“重塑张量形状 层”

keras.layers.core.Reshape(target_shape)

Reshape层用来将输入shape转换为特定的shape

参数

  • target_shape:目标shape,为整数的tuple,不包含样本数目的维度(batch大小)

输入shape:任意,但输入的shape必须固定。当使用该层为模型首层时,需要指定input_shape参数
输出shape:(batch_size,)+target_shape

2、卷积层Convolutional

2.1、Conv1D层,一维卷积层

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” 或“causal”,“causal”将产生因果(膨胀的)卷积,即output[t]不依赖于input[t+1:]。当对不能违反时间顺序的时序信号建模时有用。参考WaveNet: A Generative Model for Raw Audio, section 2.1.。“valid”代表只进行有效的卷积,即对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • dilation_rate:整数或由单个整数构成的list/tuple,指定dilated convolution中的膨胀比例。任何不为1的dilation_rate均与任何不为1的strides均不兼容。
  • use_bias:布尔值,是否使用偏置项
  • kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
  • bias_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
  • kernel_regularizer:施加在权重上的正则项,为Regularizer对象
  • bias_regularizer:施加在偏置向量上的正则项,为Regularizer对象
  • activity_regularizer:施加在输出上的正则项,为Regularizer对象
  • kernel_constraints:施加在权重上的约束项,为Constraints对象
  • bias_constraints:施加在偏置上的约束项,为Constraints对象

输入shape:形如(samples,steps,input_dim)的3D张量
输出shape:形如(samples,new_steps,nb_filter)的3D张量,因为有向量填充的原因,steps的值会改变

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

3、池化层Pooling

3.1、MaxPooling1D层 最大值池化

keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')

对时域1D信号进行最大值池化

参数

  • pool_size:整数,池化窗口大小
  • strides:整数或None,下采样因子,例如设2将会使得输出shape为输入的一半,若为None则默认值为pool_size。
  • padding:‘valid’或者‘same’

输入shape:形如(samples,steps,features)的3D张量
输出shape:形如(samples,downsampled_steps,features)的3D张量

3.2、AveragePooling1D层,平均值池化

keras.layers.pooling.AveragePooling1D(pool_size=2, strides=None, padding='valid')

对时域1D信号进行平均值池化

参数

  • pool_size:整数,池化窗口大小
  • strides:整数或None,下采样因子,例如设2将会使得输出shape为输入的一半,若为None则默认值为pool_size。
  • padding:‘valid’或者‘same’

输入shape:形如(samples,steps,features)的3D张量
输出shape:形如(samples,downsampled_steps,features)的3D张量

4、循环层Recurrent

2.4.3、LSTM层

keras.layers.recurrent.LSTM(output_dim, init='glorot_uniform', inner_init='orthogonal', forget_bias_init='one', activation='tanh', inner_activation='hard_sigmoid', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0)
  • forget_bias_init:遗忘门偏置的初始化函数,Jozefowicz et al.建议初始化为全1元素
  • inner_activation:内部单元激活函数

Keras.layers各种层介绍,网络层、卷积层、池化层 等相关推荐

  1. 卷积层,池化层,padding=‘same‘ ,为什么卷积层图像尺寸不变,池化层后图像尺寸减半呢?

    先摆一下通用计算公式: h:图像长度,k:卷积/池化核尺寸,p:填充数,s:移动步长 长度公式: 宽度公式: 对于经过卷积,池化后的图像尺寸都可以按照此公式进行计算. 在实际的使用过程中经常会有此疑惑 ...

  2. 卷积神经网络——池化层学习——最大池化

    池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下. 先举一个池化层的例子,然后我们再讨论池化层的必要 ...

  3. 简单粗暴PyTorch之nn网络层(卷积、池化、线性、激活)

    nn网络层 一.卷积层 1.1 卷积概念 1.2 nn.Conv2d 1.3 转置卷积 二.池化层 Pooling Layer 2.1 最大池化nn.MaxPool2d 2.2 平均池化nn.AvgP ...

  4. 卷积神经网络 池化层上采样(upsampling、interpolating)、下采样(subsampled、downsampled)是什么?(上采样为放大图像或图像插值、下采样为缩小图像)

    缩小图像:或称为下采样(subsampled)或降采样(downsampled) 主要目的有两个:1.使得图像符合显示区域的大小:2.生成对应图像的缩略图. 放大图像:或称为上采样(upsamplin ...

  5. 池化层在全连接层之间吗,了解最大池化层之后的全连接层的尺寸

    In the diagram (architecture) below, how was the (fully-connected) dense layer of 4096 units derived ...

  6. Lesson 16.1016.1116.1216.13 卷积层的参数量计算,1x1卷积核分组卷积与深度可分离卷积全连接层 nn.Sequential全局平均池化,NiN网络复现

    二 架构对参数量/计算量的影响 在自建架构的时候,除了模型效果之外,我们还需要关注模型整体的计算效率.深度学习模型天生就需要大量数据进行训练,因此每次训练中的参数量和计算量就格外关键,因此在设计卷积网 ...

  7. 深度学习入门 (九):卷积层和池化层的实现

    目录 卷积神经网络 CNN 整体结构 卷积层 全连接层存在的问题 卷积运算 乘积累加运算 偏置 填充 (padding) 步幅 (stride) 小结:卷积层的输出特征图的大小 3 维数据的卷积运算 ...

  8. 【卷积神经网络】卷积层,池化层,全连接层

    转于:<入门PyTorch> 卷积层是卷积神经网络的核心, 大多数计算都是在卷积层中进行的. 1 卷积层 1.1 概述 首先介绍卷积神经网络的参数. 这些参数是由一些可学习的滤波器集合构成 ...

  9. cs231n-(7)卷积神经网络:架构,卷积层/池化层

    架构总览 常用的层 卷积层 概述 池化层 归一化层 全连接层 全连接层转为卷积层 卷积网络架构 层模式 层大小设计模式 实例 计算资源考虑 额外资源 卷积神经网络和普通神经网络非常类似.卷积神经网络由 ...

最新文章

  1. 怎么将一个十进制数转化为二进制数并打印出来
  2. usb大容量存储设备驱动_Win10默认已禁用USB驱动器缓存 1903版本起无需点击安全弹出...
  3. Requirejs2.0笔记
  4. LOJ2980 THUSC2017大魔法师(线段树+矩阵乘法)
  5. 喜欢初音未来的桌面壁纸看过来
  6. ios kvo 要引入_iOS中KVO的使用
  7. 前台向后台传递汉字参数时遭遇的问题
  8. 苹果意外泄露iPhone 12发布时间;阿里将停止印度部分服务;TypeScript 4.0 发布| 极客头条...
  9. AI大牛发起神秘字母接龙,起因竟然是……
  10. Spark修炼之道(高级篇)——Spark源码阅读:第九节 Task执行成功时的结果处理...
  11. bat文件打开一闪就没了_批量提取文件名
  12. 两个摄像头合成一路_64个高空抛物摄像头安装到位 同德社区居民双手点赞
  13. Win10驱动数字签名的解决办法
  14. mysql rrd_时间序列数据库rrd启动
  15. 关于JavaScript打印去掉页眉页脚
  16. Python之路第七天,基础(9)-面向对象(上)
  17. cocos creator 发布IOS版本(一)从零开始,Xcode:12.0
  18. 白盒测试-修正条件判定覆盖
  19. 考研/嵌入式/我的所思所想及其他
  20. 如何解决数据库分词的拼写纠正问题 - PostgreSQL Hunspell 字典 复数形容词动词等变异还原...

热门文章

  1. OpenCASCADE绘制测试线束:数据交换命令之XDE 形状命令
  2. OpenCASCADE:使用 XDE 文档
  3. boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::map的测试程序
  4. boost::signals2::signal_type相关的测试程序
  5. boost::multi_array模块实现index_range 的测试
  6. boost::leaf模块读取缓冲区中的文本文件并将其打印到 std::cout
  7. boost::format模块一些真实的、简单的测试
  8. GDCM:DICOM文件的输入和输出流测试程序
  9. BOOST_TEST_LE和BOOST_TEST_LT的用法
  10. Boost:双图bimap与Boost xpressive的测试程序