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脚本生成caffe train_list.txt的方法
Apr 27 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python加载自定义词典实例
Dec 06 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
Python虚拟环境venv用法详解
May 25 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 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 memcache扩展的三种安装方法
2009/04/26 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
vue中是怎样监听数组变化的
2020/10/24 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
flask入门之表单的实现
2018/07/18 Python
浅析python的Lambda表达式
2019/02/27 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
难忘的一课教学反思
2014/04/30 职场文书
员工生日活动方案
2014/08/24 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
商务代表岗位职责
2015/02/15 职场文书
收入证明怎么写
2015/06/12 职场文书
教育读书笔记
2015/07/02 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
详解MySQL中的主键与事务
2021/05/27 MySQL