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使用redis pool的一种单例实现方式
Apr 16 Python
使用Python对MySQL数据操作
Apr 06 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
Python-openCV读RGB通道图实例
Jan 17 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
python用字节处理文件实例讲解
Apr 13 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+MSSQL分页的例子
2006/10/09 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
简单了解OpenCV是个什么东西
2017/11/10 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
新书吧创业计划书
2014/01/31 职场文书
小学生家长寄语
2014/04/02 职场文书
大学生社团活动总结
2014/04/26 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
如何用python绘制雷达图
2021/04/24 Python