Loss
Loss
计算损失函数的值。
double vector::Loss(
const vector& vect_true, // 真值向量
ENUM_LOSS_FUNCTION loss, // 损失函数
... // 附加参数
);
double matrix::Loss(
const matrix& matrix_true, // 真值矩阵
ENUM_LOSS_FUNCTION loss, // 损失函数
);
double matrix::Loss(
const matrix& matrix_true, // 真值矩阵
ENUM_LOSS_FUNCTION loss, // 损失函数
ENUM_MATRIX_AXIS axis, // 轴线
... // 附加参数
);参数
- vect_true/matrix_true
[in] 真值的向量或矩阵。
- loss
[in] ENUM_LOSS_FUNCTION枚举中的损失函数。
- axis
[in] ENUM_MATRIX_AXIS枚举值(AXIS_HORZ — 横轴,AXIS_VERT — 竖轴)。
- …
[in] 附加参数’delta’只能由Hubert损失函数(LOSS_HUBER)使用
返回值
双数值。
如果Hubert损失函数(LOSS_HUBER)中使用在’delta’参数
double delta = 1.0;
double error = fabs(y - x);
if(error<delta)
loss = 0.5 * error^2;
else
loss = 0.5 * delta^2 + delta * (error - delta);注意
神经网络的目标是找到最小化训练样本误差的算法,为此使用损失函数。
损失函数的值表示模型预测值与实际值偏差的程度。
根据不同的问题使用不同的损失函数。例如,均方误差(MSE)用于回归问题,二元交叉熵(BCE)用于二元分类。
调用Hubert损失函数的示例:
vector y_true = {0.0, 1.0, 0.0, 0.0};
vector y_pred = {0.6, 0.4, 0.4, 0.6};
double loss=y_pred.Loss(y_true,LOSS_HUBER);
Print(loss);
double loss2=y_pred.Loss(y_true,LOSS_HUBER,0.5);
Print(loss2);
/* Result
0.155
0.15125
*/