常用层

(一)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)

Dense层就是全链接层,有一下参数: output_dim:大于0的整数,代表该层的输出维度。模型中非首层的全连接层其输入维度可以自动推断,因此非首层的全连接定义时不需要指定输入维度。 init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时才有意义。 activation:激活函数,为预定义的激活函数名或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) weights:权值,为numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量。 W_regularizer:施加在权重上的正则项,为WeightRegularizer对象 b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象 activity_regularizer:施加在输出上的正则项,为ActivityRegularizer对象 W_constraints:施加在权重上的约束项,为Constraints对象 b_constraints:施加在偏置上的约束项,为Constraints对象 bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换) input_dim:整数,输入数据的维度。当Dense层作为网络的第一层时,必须指定该参数或input_shape参数。 常见的输入形式:(nb_samples, input_dim)的二维张量。输出形式为(nb_samples, output_dim)的二维张量。 示例:

# sequential 模型的第一层: model = Sequential() model.add(Dense(32, input_dim=16)) # 该模型输入(*,16)输出(*,32) # 与上一层相同 model = Sequential() model.add(Dense(32, input_shape=(16,))) # 后面的层就不需要指定输入的大小了 model.add(Dense(32))

(二) Activation层

# 激活层是对一个层的输出施加激活函数,activation:将要使用的激活函数,为预定义激活函数名或一个Tensorflow/Theano的函数。当使用激活层作为第一层时,要指定输入形式input_shape,而输出形式与输入形式相同。 keras.layers.core.Activation(activation)

(三)Dropout 层 为了防止过拟合效应现象,可以给输入数据施加Dropout。Dropout将在训练过程中每次更新参数时随机断开一定百分比(p)的输入神经元连接。

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

(四)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)

(五)Reshape层 Reshape层用来将输入shape转换为特定的shape,输入shape任意,但是形式必须固定,当使用该层为模型首层时,需要指定input_shape参数,输出shape为(batch_size,)+target_shape

keras.layers.core.Reshape(target_shape) # target_shape:目标shape,为整数的tuple,不包含样本数目的维度(batch大小)

示例:

# Sequential模型第一层 model = Sequential() model.add(Reshape((3, 4), input_shape=(12,))) # now: model.output_shape == (None, 3, 4) # 注:‘None’是 batch 的维度 # 中间层 model.add(Reshape((6, 2))) # now: model.output_shape == (None, 6, 2)

(六) Permute层 Permute层将输入的维度按照给定模式进行重排,例如,当需要将RNN(循环神经网络)和CNN(卷积神经网络)网络连接时,可能会用到该层。该层输入的shape任意,到那个该层作为第一层时候,要指定input_shape,输出维度按照指定的形式重新排列。

keras.layers.core.Permute(dims) # dims:整数tuple,指定重排的模式,不包含样本数的维度。重拍模式的下标从1开始。例如(2,1)代表将输入的第二个维度重拍到输出的第一个维度,而将输入的第一个维度重排到第二个维度 keras.layers.core.Permute(dims)

示例:

model = Sequential() model.add(Permute((2, 1), input_shape=(10, 64))) # now: model.output_shape == (None, 64, 10) # 注:‘None’是 batch 的维度

(七)RepeatVector层 RepeatVector层将输入重复n次,参数:n:整数,重复的次数。输入shape 为(nb_samples, features)的2D张量,输出shape为(nb_samples, n, features)的3D张量

keras.layers.core.RepeatVector(n)

示例:

model = Sequential() model.add(Dense(32, input_dim=32)) # now: model.output_shape == (None, 32) # 注:‘None’是 batch 的维度 model.add(RepeatVector(3)) # now: model.output_shape == (None, 3, 32)

(八)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)

参数: layers:该参数为Keras张量的列表,或Keras层对象的列表。该列表的元素数目必须大于1。 mode:合并模式,为预定义合并模式名的字符串或lambda函数或普通函数,如果为lambda函数或普通函数,则该函数必须接受一个张量的list作为输入,并返回一个张量。如果为字符串,则必须是下列值之一: “sum”,“mul”,“concat”,“ave”,“cos”,“dot” concat_axis:整数,当mode=concat时指定需要串联的轴 dot_axes:整数或整数tuple,当mode=dot时,指定要消去的轴 output_shape:整数tuple或lambda函数/普通函数(当mode为函数时)。如果output_shape是函数时,该函数的输入值应为一一对应于输入shape的list,并返回输出张量的shape。 node_indices:可选,为整数list,如果有些层具有多个输出节点(node)的话,该参数可以指定需要merge的那些节点的下标。如果没有提供,该参数的默认值为全0向量,即合并输入层0号节点的输出值。 tensor_indices:可选,为整数list,如果有些层返回多个输出张量的话,该参数用以指定需要合并的那些张量。 示例:

model1 = Sequential() model1.add(Dense(32)) model2 = Sequential() model2.add(Dense(32)) merged_model = Sequential() merged_model.add(Merge([model1, model2], mode='concat', concat_axis=1) - ____TODO__: would this actually work? it needs to.__ # achieve this with get_source_inputs in Sequential.

(九)Lambda层

keras.layers.core.Lambda(function, output_shape=None, arguments={})

输入形式任意,当使用该层作为第一层时,要指定input_shape,输出shape由output_shape参数指定的输出shape 本函数用以对上一层的输出施以任何Theano/TensorFlow表达式,参数: function:要实现的函数,该函数仅接受一个变量,即上一层的输出 output_shape:函数应该返回的值的shape,可以是一个tuple,也可以是一个根据输入shape计算输出shape的函数 arguments:可选,字典,用来记录向函数中传递的其他关键字参数

# add a x -> x^2 layer model.add(Lambda(lambda x: x ** 2)) # 增加一个层,返回输入正部分、负部分的相反部分 def antirectifier(x): x -= K.mean(x, axis=1, keepdims=True) x = K.l2_normalize(x, axis=1) pos = K.relu(x) neg = K.relu(-x) return K.concatenate([pos, neg], axis=1) def antirectifier_output_shape(input_shape): shape = list(input_shape) assert len(shape) == 2 # only valid for 2D tensors shape[-1] *= 2 return tuple(shape) model.add(Lambda(antirectifier, output_shape=antirectifier_output_shape))

(十)ActivityRegularizer层

keras.layers.core.ActivityRegularization(l1=0.0, l2=0.0) # 经过本层的数据不会有任何变化,但会基于其激活值更新损失函数值

参数: l1:1范数正则因子(正浮点数) l2:2范数正则因子(正浮点数) 输入shape任意,当使用该层作为第一层时,要指定input_shape,输出shape 与输入shape相同

(十一)Masking层

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

使用给定的值对输入的序列信号进行“屏蔽”,用以定位需要跳过的时间步。对于输入张量的时间步,即输入张量的第1维度(维度从0开始算,见例子),如果输入张量在该时间步上都等于mask_value,则该时间步将在模型接下来的所有层(只要支持masking)被跳过(屏蔽)。如果模型接下来的一些层不支持masking,却接受到masking过的数据,则抛出异常。 示例: 考虑输入数据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))

(十二)Highway层

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)

Highway层建立全连接的Highway网络,这是LSTM在前馈神经网络中的推广。输入shape形如(nb_samples, input_dim)的2D张量输出shape形如(nb_samples, output_dim)的2D张量。 参数: output_dim:大于0的整数,代表该层的输出维度。模型中非首层的全连接层其输入维度可以自动推断,因此非首层的全连接定义时不需要指定输入维度。 init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时有意义。 activation:激活函数,为预定义的激活函数名或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x) weights:权值,为numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量。 W_regularizer:施加在权重上的正则项,为WeightRegularizer对象 b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象 activity_regularizer:施加在输出上的正则项,为ActivityRegularizer对象 W_constraints:施加在权重上的约束项,为Constraints对象 b_constraints:施加在偏置上的约束项,为Constraints对象 bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换) input_dim:整数,输入数据的维度。当该层作为网络的第一层时,必须指定该参数或input_shape参数。 transform_bias:用以初始化传递参数,默认为-2(请参考文献理解本参数的含义)

(十三)MaxoutDense层 全连接的Maxout层,MaxoutDense层以nb_features个Dense(input_dim,output_dim)线性层的输出的最大值为输出。nb_features:内部使用的全连接层的数目。MaxoutDense可对输入学习出一个凸的、分段线性的激活函数。输入shape形如(nb_samples, input_dim)的2D张量输出shape形如(nb_samples, output_dim)的2D张量。

转载来自:http://www.knowsky.com/1053989.html

Keras.layers.core.dense()方法详解相关推荐

  1. Keras大法(4)——Dense方法详解

    Keras大法(4)--Dense方法详解 (一)keras.layers.Dense方法 (二)使用示例 (三)总 结 (一)keras.layers.Dense方法 在开始定义模型之前,我们有必要 ...

  2. 视频分类之 UCF-101 上的 CNN 方法详解

    视频分类之 UCF-101 上的 CNN 方法详解 Code at Github: https://github.com/sujiongming/UCF-101_video_classificatio ...

  3. Python的Django框架中forms表单类的使用方法详解2

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  4. pytorch模型(.pt)转onnx模型(.onnx)的方法详解(1)

    1. pytorch模型转换到onnx模型 2.运行onnx模型 3.比对onnx模型和pytorch模型的输出结果 我这里重点是第一点和第二点,第三部分  比较容易 首先你要安装 依赖库:onnx ...

  5. Linux Kernel 6.0 CXL Core pci.c 详解

    文章目录 前言 相关链接 Ref 正文 前言 CXL 是一个比较新的技术,所以我研究的内核源码是选了当前比较新的内核版本 linux 6.0.打算将内核关于 CXL 的驱动进行解析一遍,一步一步慢慢来 ...

  6. Keras中Dropout的用法详解

    本文借鉴整理三篇文章,比较全面的用法总结了,看完本文无需再查阅其他资料 一.Keras 中使用 Dropout 正则化减少过度拟合 Dropout正则化是最简单的神经网络正则化方法.其原理非常简单粗暴 ...

  7. 线程池invokeAll方法详解

    线程池invokeAll方法详解 问题起源与抽象 问题排查与猜测 猜测一:invokeAll 在异步执行后会不会同步等待线程执行完毕获取最终结果 猜测二:队列里面可能存在第一次调用 invokeAll ...

  8. 神经网络学习小记录58——Keras GhostNet模型的复现详解

    神经网络学习小记录58--Keras GhostNet模型的复现详解 学习前言 什么是GhostNet模型 源码下载 GhostNet模型的实现思路 1.Ghost Module 2.Ghost Bo ...

  9. ASP.NET Core 中 HttpContext 详解与使用 |

    ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解 笔者没有学 ASP.NET,直接学 ASP.NET Core ,学完 A ...

最新文章

  1. 一个新手对linux的认识
  2. 写文献综述的二十八个要点
  3. iOS 使用GPUImage实现iOS 7的模糊效果
  4. [No000035]操作系统Operating System之OS Interface操作系统接口
  5. CodeForces - 103E Buying Sets(最小权闭合子图)
  6. 锁屏快捷键_全面屏 iPhone 锁屏快捷键美化,让你的 iPhone 更特别
  7. 分布式监控系统ganglia配置文档
  8. win11怎样在多屏中设置主显示器 Windows11主显示器的设置方法
  9. uva 10825 - Anagram and Multiplication(暴力)
  10. python——import日常学习记录
  11. dd 转换和拷贝复制文件
  12. 分布式系统到底是什么
  13. C语言大作业--小型工资管理系统
  14. lisp 获取横断面数据_基于Visual LISP全路线横断面数据自动提取
  15. matlab NCA,Neighborhood Component Analysis (NCA) Feature Selection
  16. Flutter从0到1自定义日历
  17. ECharts动态图表展示
  18. WinRar去除弹窗广告的学习和研究
  19. 百度网盘提速法,不用插件,不用安装脚本
  20. 王艳 201771010127《面向对象程序设计(Java)》第四周学习总结

热门文章

  1. JavaScript赋值运算符,比较运算符,逻辑运算符
  2. LinkedIn 中国版将关闭:年内将发布新的 InJobs 应用,但不包含社交功能。
  3. 论是否可能找到一种独特技术指标的组合形成自己的交易系统
  4. bzoj1349 [Baltic2006]Squint
  5. Java ZIP压缩输入输出流
  6. maven settings.xml 配置
  7. 泛微软件服务器,泛微移动平台 服务器设置
  8. STM32 CubeMX如何生成微秒(us)级延时
  9. 我的世界java版的马难以驯服_我的世界:这几种生物很难驯服,最难搞定的就是它了!...
  10. 计算机通信与信息系统教学,通信与信息系统学科学术型硕士研究生培养方案