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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python实现的Kmeans++算法实例
Apr 26 Python
Python+Wordpress制作小说站
Apr 14 Python
Python元字符的用法实例解析
Jan 17 Python
Python 元类实例解析
Apr 04 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
Python异常处理知识点总结
Feb 18 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python boto和boto3操作bucket的示例
Oct 30 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
python实现的一个p2p文件传输实例
2014/06/04 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
索桥的故事教学反思
2014/02/06 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
政治学求职信
2014/06/03 职场文书
迎国庆横幅标语
2014/10/08 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android