keras Lambda 层
Lambda层
- keras.layers.core.Lambda(function, output_shape=None, mask=None, arguments=None)
本函数用以对上一层的输出施以任何Theano/TensorFlow表达式
如果你只是想对流经该层的数据做个变换,而这个变换本身没有什么需要学习的参数,那么直接用Lambda Layer是最合适的了。
导入的方法是
- from keras.layers.core import Lambda
Lambda函数接受两个参数,第一个是输入张量对输出张量的映射函数,第二个是输入的shape对输出的shape的映射函数。
参数
function:要实现的函数,该函数仅接受一个变量,即上一层的输出
output_shape:函数应该返回的值的shape,可以是一个tuple,也可以是一个根据输入shape计算输出shape的函数
mask: 掩膜
arguments:可选,字典,用来记录向函数中传递的其他关键字参数
例子
- # add a x -> x^2 layer
- model.add(Lambda(lambda x: x ** 2))
- # add a layer that returns the concatenation# of the positive part of the input and
- # the opposite of the negative part
- 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))
输入shape
任意,当使用该层作为第一层时,要指定input_shape
输出shape
由output_shape参数指定的输出shape,当使用tensorflow时可自动推断
================================================
keras Lambda自定义层实现数据的切片,Lambda传参数
1、代码如下:
- import numpy as np
- from keras.models import Sequential
- from keras.layers import Dense, Activation,Reshape
- from keras.layers import merge
- from keras.utils.visualize_util import plot
- from keras.layers import Input, Lambda
- from keras.models import Model
- def slice(x,index):
- return x[:,:,index]
- a = Input(shape=(4,2))
- x1 = Lambda(slice,output_shape=(4,1),arguments={'index':0})(a)
- x2 = Lambda(slice,output_shape=(4,1),arguments={'index':1})(a)
- x1 = Reshape((4,1,1))(x1)
- x2 = Reshape((4,1,1))(x2)
- output = merge([x1,x2],mode='concat')
- model = Model(a, output)
- x_test = np.array([[[1,2],[2,3],[3,4],[4,5]]])
- print model.predict(x_test)
- plot(model, to_file='lambda.png',show_shapes=True)
2、注意Lambda 是可以进行参数传递的,传递的方式如下代码所述:
- def slice(x,index):
- return x[:,:,index]
如上,index是参数,通过字典将参数传递进去.
- x1 = Lambda(slice,output_shape=(4,1),arguments={'index':0})(a)
- x2 = Lambda(slice,output_shape=(4,1),arguments={'index':1})(a)
3、上述代码实现的是,将矩阵的每一列提取出来,然后单独进行操作,最后在拼在一起。可视化的图如下所示。

参考:
https://blog.csdn.net/hewb14/article/details/53414068
https://blog.csdn.net/lujiandong1/article/details/54936185
https://keras-cn.readthedocs.io/en/latest/layers/core_layer/
keras Lambda 层的更多相关文章
- Keras 自定义层
1.对于简单的定制操作,可以通过使用layers.core.Lambda层来完成.该方法的适用情况:仅对流经该层的数据做个变换,而这个变换本身没有需要学习的参数. # 切片后再分别进行embeddin ...
- Keras常用层
Dense层:全连接层 Activatiion层:激活层,对一个层的输出施加激活函数 Dropout层:为输入数据施加Dropout.Dropout将在训练过程中每次更新参数时按一定概率(rate)随 ...
- Keras网络层之“关于Keras的层(Layer)”
关于Keras的“层”(Layer) 所有的Keras层对象都有如下方法: layer.get_weights():返回层的权重(numpy array) layer.set_weights(weig ...
- keras Dense 层
文档地址:https://keras.io/layers/core/#dense keras.layers.Dense(units, activation=None, use_bias=True, k ...
- TensorFlow keras dropout层
# 建立神经网络模型 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), # 将输入数据的形状进行修改成神经网 ...
- Keras网络层之常用层Core
常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接.激活层等 Dense层 keras.layers.core.Dense(units, activation=None ...
- 『开发技巧』Keras自定义对象(层、评价函数与损失)
1.自定义层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 Keras2.0 ...
- Keras(七)Keras.layers各种层介绍
一.网络层 keras的层主要包括: 常用层(Core).卷积层(Convolutional).池化层(Pooling).局部连接层.递归层(Recurrent).嵌入层( Embedding).高级 ...
- keras模块学习之层(layer)的使用-笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! keras的层主要包括: 常用层(Core).卷积层(Convolutional).池化层(Pooling).局部连接层.递归层(R ...
随机推荐
- cat /proc/sys/net/ipv4/ip_forward 0 解决办法
[root@localhost java]# cat /proc/sys/net/ipv4/ip_forward 出于安全考虑,Linux系统默认是禁止数据包转发的. 所谓转发即当主机拥有多于一块的网 ...
- 利用wget配合bash脚本同时下载多个文件
先把需要下载的文件写入到一个文件中,命名为urls.txt,比如: http://blog.is36.com/a.jpg http://blog.is36.com/b.jpg http://blog. ...
- ubuntu生成core转储文件
1.ulimit -c 判断是否开启转储 为0 则没有开启 2.ulimit -c unlimited 设置转储core大小没有限制 3.设置转储文件位置 echo "/var/core/% ...
- Android 开发工具类 27_多线程下载大文件
多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...
- mysql Inoodb 内核
MySQL从5.5版本开始将InnoDB作为默认存储引擎,该存储引擎是第一个完整支持事务ACID特性的存储引擎,且支持数据行锁,多版本并发控制(MVCC),外键,以及一致性非锁定读. 作为默认存储引擎 ...
- kibana-1-安装
由于es5.2版本对head的插件支持不如2.4 安装挺麻烦, 于是选用kibana 关于5.2安装head插件可见这个博客 http://www.cnblogs.com/xing901022/p/6 ...
- OOAD之单例模式Singleton的6种写法
1 主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 一 :第一种 饿汉式(预加载) public class Singleton { private Singleton(){ ...
- Hadoop+Hive 操作mongodb数据
Hadoop+Hive 操作mongodb数据 1.版本概述 hadoop-2.7.3.hive-2.2 下载响应的jar包:http://mvnrepository.com/,直接搜索想要的jar包 ...
- WCF异常信息
1.服务“CJ.Demo.Conso.WcfService.EmployeeMngService”有零个应用程序(非基础结构)终结点.这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务 ...
- visual studio 不能进入调试状态
解决Windows操作系统在处理回环地址 1. 第一种解决方案是禁用环回检查. 步骤如下 a) 依次单击“开始”和“运行”,键入 regedit,然后单击“确定” b) 在注册表编辑器中,找到并单击下 ...