Keras教学(12):使用Keras自定义神经网络的损失函数,你学废了吗

【写在前面】:大家好,我是【猪葛】
一个很看好AI前景的算法工程师
在接下来的系列博客里面我会持续更新Keras的教学内容(文末有大纲)
内容主要分为两部分
第一部分是Keras的基础知识
第二部分是使用Keras搭建FasterCNN、YOLO目标检测神经网络
代码复用性高
如果你也感兴趣,欢迎关注我的动态一起学习
学习建议:
有些内容一开始学起来有点蒙,对照着“学习目标”去学习即可
一步一个脚印,走到山顶再往下看一切风景就全明了了



本篇博客学习目标:1、重点是理解如何使用Keras自定义损失函数







一、损失函数的使用

损失函数是编译模型时所需的两个参数之一。

你可以传递一个现有的损失函数名

model.compile(loss='mean_squared_error', optimizer='sgd')

或者一个 TensorFlow 符号函数。

from keras import losses

model.compile(loss=losses.mean_squared_error, optimizer='sgd')

该符号函数为每个数据点返回一个标量,有以下两个参数:

  • y_true: 真实标签。TensorFlow 张量。
  • y_pred: 预测值。TensorFlow张量,其 shape 与 y_true 相同。

实际的优化目标是所有数据点的输出数组的平均值。

二、可用损失函数

误差函数标准写法应该是

from tensorflow.keras import losses
loss_zhi = losses.mean_squared_error(y_true, y_pred)

下面介绍几个常见的误差函数

序号误差类型误差函数
1平方差误差损失,用于回归mean_squared_error(y_true, y_pred)
2绝对值误差损失,用于回归mean_absolute_error(y_true, y_pred)
3平均百分比误差损失,用于回归mean_absolute_percentage_error(y_true, y_pred)
4二元交叉熵,用于二分类binary_crossentropy(y_true, y_pred)
5类别交叉熵,用于多分类,并且要求y_predone_hot编码categorical_crossentropy(y_true, y_pred)
6稀疏类别交叉熵,用于多分类,并且要求y_pred为序号编码形式sparse_categorical_crossentropy(y_true, y_pred)

大部分实际情况,损失函数都是需要我们自己定义的,所以我们了解上面这几个即可,不至于在教学进行演示的过程中不知道这些东西是什么。

三、自定义损失函数

假设我现在已经自定义好了一个python实现的损失函数myself_loss,我该如何将损失函数运用于模型的训练呢。

方法很简单

from keras import losses
def myself_loss(y_true, y_pred):
	# 写计算losses值的方式
	losses = y_true - y_pred
	return losses
model.compile(loss=myself_loss, optimizer='sgd')

直接将函数名传给loss参数即可。

值得注意的是,我们自定义损失函数的时候,参数必须并且只有两个,一个是y_true,一个是y_pred并且y_true参数放在y_pred的前面。

以上就是本期内容,如果你也喜欢人工智能,欢迎查看我的博客,一起学习一起进步
最后附上该系列教学内容

在这里插入图片描述

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值