keras 多任务多loss实例


Posted in Python onJune 22, 2020

记录一下:

# Three loss functions
category_predict1 = Dense(100, activation='softmax', name='ctg_out_1')(
  Dropout(0.5)(feature1)
)
category_predict2 = Dense(100, activation='softmax', name='ctg_out_2')(
  Dropout(0.5)(feature2)
)
dis = Lambda(eucl_dist, name='square')([feature1, feature2])
judge = Dense(2, activation='softmax', name='bin_out')(dis)
model = Model(inputs=[img1, img2], outputs=[category_predict1, category_predict2, judge])
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9),
       loss={
         'ctg_out_1': 'categorical_crossentropy',
         'ctg_out_2': 'categorical_crossentropy',
         'bin_out': 'categorical_crossentropy'},
       loss_weights={
         'ctg_out_1': 1.,
         'ctg_out_2': 1.,
         'bin_out': 0.5
       },
       metrics=['accuracy'])

补充知识:多分类loss函数本质理解

一、面对一个多分类问题,如何设计合理的损失函数呢?

1、损失函数的本质在数学上称为目标函数;这个目标函数的目标值符合最完美的需求;损失函数的目标值肯定是0,完美分类的损失必然为0 ;

2、损失函数分为两部分,一部分为正确的分类,一部分为错误的分类;保留其中任何一个部分都可以达到目标;就好比两条路都可以通向罗马;都可以通过转化均可以令损失函数的最小值为0时,为目标值;(当然最小值不一定要为0 );最关键是最小化方向是通向目标值的;

3、多分类问题涉及概率问题,目标函数中设计只保留正确的部分(为什么不保留错误部分,我想都可以达到目的,这里保留正确部分,计算更方便);用极值思维想象完美分类情况下,输出的正确类别的概率必然是1,所以损失函数loss=-1/n(Px1+Px2+Px3+……);Px1代表样本x为x1的情况下,输出样本类别相同的概率;最好的情况就是p值都为1;损失值为0 ,可loss函数为-1;如何设计才能等效呢?答案就是加log函数;Loss=-1/n(logPx1+logPx2+logPx3+……);目标函数最小值就是0;

二、 如何在损失函数中只保留正确的部分呢?

1、从逆向的角度而言,错误部分的前面加个系数0,正确部分为1;从简单开始做起,比如说01分类,y*(logPy=1)+(1-y)*(logPy=0); y为样本真实分类;这个就能保存了;y=1时,就保留了第一部分,y=0时就保留了第二部分;但当将01分类扩展成三分类甚至多分类时,这种情况就不能够适应了;这是因为没有明白本质问题;

2、可以将真实样本标签输出转化成概率值;只是正确的概率值为1,其他类别概率为0;这样就可以完美解决多分类的问题;就是说每一个模型输出类别Log概率前乘以一个概率值; keras 多任务多loss实例 这个公式里面的P值全为1;为0的忽略掉了;

三、如何优化呢?

1、模型输出的概率值转化为一个h(x)的函数;通过改变函数内部的w值来达到最小值;也许达不到0值;这个跟函数的Power(拟合能力)有关;

四、cross-entropy loss公式怎么写呢?

keras 多任务多loss实例 Y代表样本的one-hot向量;yhat代表softmax输出的向量

以上这篇keras 多任务多loss实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
Python上下文管理器和with块详解
Sep 09 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
Python3模拟curl发送post请求操作示例
May 03 Python
ipython和python区别详解
Jun 26 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 Python
python对execl 处理操作代码
Jun 22 #Python
Python select及selectors模块概念用法详解
Jun 22 #Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 #Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 #Python
Python Excel vlookup函数实现过程解析
Jun 22 #Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 #Python
python和php哪个更适合写爬虫
Jun 22 #Python
You might like
php验证session无效的解决方法
2014/11/04 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Django框架实现分页显示内容的方法详解
2019/05/10 Python
详解Django admin高级用法
2019/11/06 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python学生信息管理系统实现代码
2019/12/17 Python
python字典的值可以修改吗
2020/06/29 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
生产车间标语
2014/06/11 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
长征观后感
2015/06/09 职场文书
高一数学教学反思
2016/02/18 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android