-
Huber’s Robust Loss
l ( y , y ′ ) = { ∣ y − y ′ ∣ − 1 2 if ∣ y − y ′ ∣ > 1 1 2 ( y − y ′ ) 2 otherwise l\left(y, y^{\prime}\right)= \begin{cases}\left|y-y^{\prime}\right|-\frac{1}{2} & \text { if }\left|y-y^{\prime}\right|>1 \\ \frac{1}{2}\left(y-y^{\prime}\right)^{2} & \text { otherwise }\end{cases} l(y,y′)={∣y−y′∣−2121(y−y′)2 if ∣y−y′∣>1 otherwise -
创建一个数据 y ^ \hat{y} y^,其中包含2个样本在3个类别的预测概率,使用 y y y作为 y ^ \hat{y} y^中概率的索引
y = torch.tensor([0, 2]) y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]]) print(y_hat[[0, 1], y]) # tensor([0.1000, 0.5000])
-
实现交叉熵损失函数
def cross_entropy(y_hat, y): return -torch.log(y_hat[range(len(y_hat)), y])
-
将预测类别与真实 y y y元素进行比较
def accuracy(y_hat, y): """计算预测正确的数量""" if len(y_hat.shape) > 1 and y_hat.shape[1] > 1: y_hat = y_hat.argmax(axis=1) cmp = y_hat.type(y.dtype) == y return float(cmp.type(y.dtype).sum()) accuracy(y_hat, y) / len(y)
-
图片分类中的小
trich
:softlabel策略。