![在这里插入图片描述](https://img-blog.csdnimg.cn/20200926102508883.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjY0OTA1Mg==,size_16,color_FFFFFF,t_70#pic_center)
1.常用损失函数
评估函数的接口:tf.keras.metrics
tf.keras.metrics.Binary_Accuracy
tf.keras.metrics.binary_accuracy 两者有什么区别?
前者是类的实现形式,后者是函数的实现形式
常用评估函数:
回归
tf.keras.metrics.MeanSquaredError (平方差误差,用于回归,MSE)
tf.keras.metrics.MeanAbsoluteError (绝对值误差,用于回归,MAE)
tf.keras.metrics.MeanAbsolutePercentageError (平均百分比误差,用于回归,MAPE)
tf.keras.metrics.RootMeanSquareError (均方根误差 用于回归)
分类:
tf.keras.metrics.Accuracy (准确率 用于分类)
tf.keras.metrics.AUC (ROC曲线下的面积,用于二分类)
tf.keras.metrics.Precision (精确率,用于二分类)
tf.keras.mertics.Recall (召回率,用于二分类)
tf.keras.metrixcs.TopKCategoricalAccuracy (多分类TopK准确率)
2.自定义评估函数
基于tf.keras.metrics.Metric来实现的
两种实现形式:基于类的实现和基于函数的实现
大部分使用是基于类的实现
3.案例讲解-mnist数据集实现自定义评估函数
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import Model
import numpy as np
# 数据集
mnist = np.load("mnist.npz")
x_train, y_train, x_test, y_test = mnist['x_train'],mnist['y_train'],mnist['x_test'],mnist['y_test']
x_train, x_test = x_train / 255.0, x_test / 255.0
# 可视化
fig, ax = plt.subplots(
nrows=2,
ncols=5,
sharex=True,
sharey=True, )
ax = ax.flatten()
for i in range(10):
img = x_train[y_train == i][0].reshape(28, 28)
ax[i].imshow(img, cmap='Greys', interpolation='nearest')
ax[0].set_xticks(