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中__str__和__repr__方法的区别
Apr 17 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
对Python中内置异常层次结构详解
Oct 18 Python
wxPython实现文本框基础组件
Nov 18 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 Python
Python安装使用Scrapy框架
Apr 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原理之变量(Variables inside PHP)
2013/08/09 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php实现word转html的方法
2016/01/22 PHP
详解PHP归并排序的实现
2016/10/18 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
range 标准化之获取
2011/08/28 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Python devel安装失败问题解决方案
2020/06/09 Python
python打开文件的方式有哪些
2020/06/29 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
总经理秘书的岗位职责
2013/12/27 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
关于环保的建议书
2014/05/12 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
男人帮观后感
2015/06/18 职场文书
2015中学学校工作总结
2015/07/20 职场文书