keras 使用Lambda 快速新建层 添加多个参数操作


Posted in Python onJune 10, 2020

keras许多简单操作,都需要新建一个层,使用Lambda可以很好完成需求。

# 额外参数
def normal_reshape(x, shape):
 return K.reshape(x,shape)
 
output = Lambda(normal_reshape, arguments={'shape':(-1, image_seq, 1000)})(output)
output = Lambda(lambda inp: K.mean(inp, axis=1), output_shape=(1000,))(output)

更多参考

补充知识:keras 实现包括batch size所在维度的reshape,使用backend新建一层 针对多输入使用不同batch size折衷解决办法

新建层,可以在此层内使用backend完成想要的功能,如包含batch size维度在内的reshpe:

def backend_reshape(x): return backend.reshape(x, (-1, 5, 256))

使用lambda方法调用层:

vision_model.add(Lambda(backend_reshape, output_shape=(5, 256)))

注意指定输出维度

在多输入问题中,有时两个输入具有不同的batch size,但在keras无法直接实现。我所遇到的问题是,我有两个输入分别是图像输入和问题输入,对于图像输入每个样本是一个图像序列。这就要求我们在把图像序列输入到CNN中时是一张一张图像。

我的解决办法是在输入是把图像序列作为一个样本,等输入进去后,通过上述的reshape方法将图像序列重新拆分成一张张图像输入到CNN,然后在后期处理时重新reshape成一个序列样本。

代码:

image_seq = 4
def preprocess_reshape(x):
 return K.reshape(x, (-1, 224, 224,3))
 
def backend_reshape(x):
 return K.reshape(x, (-1, image_seq, 256))
image_input = Input(shape=(image_seq, 224, 224, 3) , name='input_img')
image_re = Lambda(preprocess_reshape, output_shape=(224,224,3))(image_input)
im_pre = Lambda(preprocess_input, name='preprocessing')(image_re)

vision_model.add(Lambda(backend_reshape, output_shape=(image_seq, 256))) vision_model.add(LSTM(256, kernel_regularizer=l2, recurrent_regularizer=l2))

以上这篇keras 使用Lambda 快速新建层 添加多个参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的type()方法的使用
May 21 Python
Python计时相关操作详解【time,datetime】
May 26 Python
通过Pandas读取大文件的实例
Jun 07 Python
Linux下python3.7.0安装教程
Jul 30 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python画双y轴图像的示例代码
Jul 07 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python Tkinter Entry和Text的添加与使用详解
Mar 04 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 #Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 #Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 #Python
浅谈Python中的字符串
Jun 10 #Python
Keras 使用 Lambda层详解
Jun 10 #Python
keras打印loss对权重的导数方式
Jun 10 #Python
Python xlrd模块导入过程及常用操作
Jun 10 #Python
You might like
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
jquery批量控制form禁用的代码
2013/08/06 Javascript
js 操作符汇总
2014/11/08 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
js实现开关灯效果
2020/03/30 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python解析基于xml格式的日志文件
2017/02/25 Python
python实现决策树分类
2018/08/30 Python
Django中使用Celery的方法示例
2018/11/29 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python无损压缩图片的示例代码
2020/08/06 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
护士求职自荐信范文
2014/03/19 职场文书
中介业务员岗位职责
2014/04/09 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
预备党员介绍人意见
2015/06/01 职场文书