什么是损失函数
损失函数(loss function)就是用来衡量预测值和真实值的差距的函数,是模型优化的目标,所以也叫目标函数、优化评分函数。
keras中的损失函数在模型编译时指定:
from tensorflow.python.keras import Model
#inputs是输入层,output是输出层
inputs = Input(shape=(3,))
x = Dense(4, activation='relu')(inputs)
outputs = Dense(5, activation=tf.nn.softmax)(x)
model = Model(inputs,outputs)
#--------------在编译时,指定损失函数-------------------------#
model.compile(loss = 'mean_squared_error', optimizer='sgd')
#也可以这样:
#from keras import losses
#model.compile(loss = tf.keras.losses.mean_squared_error, optimizer='sgd')
#---------------------------------------------------------#
使用keras的损失函数
import tensorflow as tf
from tensorflow.python.keras import losses
loss = tf.keras.losses.mean_squared_error
keras提供的损失函数
mean_squared_error:均方误差 MSE
L = 1 n ∑ i = 1 n ( y t r u e ( i ) − y p r e d ( i ) ) 2 L = \frac{1}{n}\sum_{i=1}^{n}\left ( y_{true}^{(i)} - y_{pred}^{(i)}\right )^{2} L=n1i=1∑n(ytrue(i)−ypred(i))2
losses中的源码:(在自定义时可以结合使用)
def mean_squared_error(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
mean_absolute_percentage_error: MAPE
L = 1 n ∑ i = 1 n ∣ y t r u e ( i ) − y p r e d ( i ) y t r u e ( i ) ∣ ⋅ 100 L=\frac{1}{n}\sum_{i=1}^{n}\left | \frac{y_{true}^{(i)} - y_{pred}^{(i)}}{y_{true}^{(i)}} \right |\cdot 100 L=n1