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选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
Python中的匿名函数使用简介
Apr 27 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python中字符串的修改及传参详解
Nov 30 Python
python的faker库用法
Nov 28 Python
python kafka 多线程消费者&手动提交实例
Dec 21 Python
django 外键创建注意事项说明
May 20 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
PyTorch安装与基本使用详解
Aug 31 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 Python
Python编程super应用场景及示例解析
Oct 05 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
js分页工具实例
2015/01/28 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
Python正则表达式常用函数总结
2017/06/24 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
python文件选择对话框的操作方法
2019/06/27 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
Linux内核产生并发的原因
2012/07/13 面试题
停水通知
2015/04/16 职场文书
人生遥控器观后感
2015/06/11 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android