损失函数
概述
损失函数是模型优化的目标,所以又叫目标函数、优化评分函数,在keras中,模型编译的参数loss指定了损失函数的类别,有两种指定方法:
model.compile(loss='mean_squared_error', optimizer='sgd')
或者
from keras import losses
model.compile(loss=losses.mean_squared_error, optimizer='sgd')
可用损失函数
可用的损失目标函数:
mean_squared_error或mse
mean_absolute_error或mae
mean_absolute_percentage_error或mape
mean_squared_logarithmic_error或msle
squared_hinge
hinge
categorical_hinge
binary_crossentropy(亦称作对数损失,logloss)
logcosh
categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列
sparse_categorical_crossentrop:如上,但接受稀疏标签。注意,使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1)
kullback_leibler_divergence:从预测值概率分布Q到真值概率分布P的信息增益,用以度量两个分布的差异.
poisson:即(predictions - targets * log(predictions))的均值
cosine_proximity:即预测值与真实标签的余弦距离平均值的相反数
损失函数公式
https://zhuanlan.zhihu.com/p/34667893
二分类-报错
关于损失函数的藏奸报错:
用Keras做文本二分类,总是遇到如题错误,
我的类别是0或1,但是错误跟我说不能是1.
参见:Received a label value of 1 which is outside the valid range of [0, 1) - Python, Keras
loss function的问题。
原来用的是sparse_categorical_crossentropy,
改为binary_crossentropy问题解决。
优化器
https://www.cnblogs.com/xiaobingqianrui/p/10756046.html