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实现线程池代码分享
Jun 21 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
python 调用win32pai 操作cmd的方法
May 28 Python
Python实现调度算法代码详解
Dec 01 Python
名片管理系统python版
Jan 11 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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 无限分类的树类代码
2009/12/03 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
Fabric 应用案例
2016/08/28 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
医学专业职业生涯规划范文
2014/02/05 职场文书
新春文艺演出主持词
2014/03/27 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
继承公证书格式
2015/01/26 职场文书
总经理检讨书范文
2015/02/16 职场文书
2015年教师国培感言
2015/08/01 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
初三英语教学反思
2016/02/15 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
python playwright 自动等待和断言详解
2021/11/27 Python