keras 自定义loss model.add_loss的使用详解


Posted in Python onJune 22, 2020

一点见解,不断学习,欢迎指正

1、自定义loss层作为网络一层加进model,同时该loss的输出作为网络优化的目标函数

from keras.models import Model
import keras.layers as KL
import keras.backend as K
import numpy as np
from keras.utils.vis_utils import plot_model
 
x_train=np.random.normal(1,1,(100,784))
 
x_in = KL.Input(shape=(784,))
x = x_in
x = KL.Dense(100, activation='relu')(x)
x = KL.Dense(784, activation='sigmoid')(x)
def custom_loss1(y_true,y_pred):
 return K.mean(K.abs(y_true-y_pred))
loss1=KL.Lambda(lambda x:custom_loss1(*x),name='loss1')([x,x_in])
 
model = Model(x_in, [loss1])
model.get_layer('loss1').output#取出loss
model.add_loss(loss1)#作为网络优化的目标函数
model.compile(optimizer='adam')
plot_model(model,to_file='model.png',show_shapes=True)
#
model.fit(x_train, None, epochs=5)

2、自定义loss,作为网络优化的目标函数

x_in = KL.Input(shape=(784,))
x = x_in
x = KL.Dense(100, activation='relu')(x)
x = KL.Dense(784, activation='sigmoid')(x)
 
model = Model(x_in, x)
loss = K.mean((x - x_in)**2)
model.add_loss(loss)#只是作为loss优化目标函数
model.compile(optimizer='adam')
plot_model(model,to_file='model.png',show_shapes=True)
model.fit(x_train, None, epochs=5)

补充知识:keras load_weights fine-tune

分享一个小技巧,就是在构建网络模型的时候,不要怕麻烦,给每一层都定义一个名字,这样在复用之前的参数权重的时候,除了官网给的先加载权重,再冻结权重之外,你可以通过简单的修改层的名字来达到加载之前训练的权重的目的,假设权重文件保存为model_pretrain.h5 ,重新使用的时候,我把想要复用的层的名字设置成一样的,然后

model.load_weights('model_pretrain.h5', by_name=True)

以上这篇keras 自定义loss model.add_loss的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
mac下如何将python2.7改为python3
Jul 13 Python
Python import与from import使用及区别介绍
Sep 06 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
由面试题加深对Django的认识理解
Jul 19 Python
pandas DataFrame创建方法的方式
Aug 02 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
python软件都是免费的吗
Jun 18 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
Python项目跨域问题解决方案
Jun 22 #Python
python os模块在系统管理中的应用
Jun 22 #Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 #Python
python实现猜数游戏(保存游戏记录)
Jun 22 #Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 #Python
在Mac中配置Python虚拟环境过程解析
Jun 22 #Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 #Python
You might like
php生成excel文件的简单方法
2014/02/08 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
一篇不错的Python入门教程
2007/02/08 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python的装饰器使用详解
2017/06/26 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
在python中画正态分布图像的实例
2019/07/08 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python绘制动态曲线教程
2020/02/24 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
党员个人总结自评
2015/02/14 职场文书
安全保证书格式
2015/02/28 职场文书
教育教学工作反思
2016/02/24 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android