深度学习之 6 线性回归实现2

本文是接着上一篇深度学习之 6 线性回归实现_水w的博客-CSDN博客

目录

3、常用损失函数

(1)平均绝对误差 (MAE):

(2)均方误差 (MSE):

(3)二元交叉熵损失函数:

(4)包含sigmoid层的二元交叉熵损失函数 :

(5)交叉熵损失函数:

4、模型预测及评价(分类问题)


3、常用损失函数

(1)平均绝对误差 (MAE):

'''◼ torch.nn中的实现'''
loss = nn.L1Loss()

(2)均方误差 (MSE):

'''◼ torch.nn中的实现'''
loss = nn.MSELoss()

(3)二元交叉熵损失函数:

'''◼ torch.nn中的实现'''
loss = nn.BCELoss ()

(4)包含sigmoid层的二元交叉熵损失函数

'''◼ torch.nn中的实现'''
loss = nn.BCEWithLogitsLoss() # 包含了sigmoid运算

(5)交叉熵损失函数:

'''◼ 手动交叉熵损失函数的实现:'''
# 交叉熵损失函数
def cross_entropy(y_hat, y):
    """
    Parameters
    ----------
    y_hat: 预测值,shape is (batch_size, class_num)
    y: 真值,shape is (batch_size, )
    Returns
    -------
    """
    return - torch.log(y_hat.gather(1, y.view(-1, 1)))



'''◼ torch.nn中的实现'''
1 loss = nn.CrossEntropyLoss()
值得注意的是, 分开定义 𝐬𝐨𝐟𝐭𝐦𝐚𝐱 运算和交叉熵损失函数可能会造成数值不稳定。 因此,PyTorch提供了一个包括 𝐬𝐨𝐟𝐭𝐦𝐚𝐱 运算和交叉熵损失计算的函数。它的数值稳定性更好。所以在输出层,我们不需要再进行 𝐬𝐨𝐟𝐭𝐦𝐚𝐱 操作:

 

4、模型预测及评价(分类问题)

对于分类问题,给定任一样本特征,模型可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致,说明这次预测是正确的。我们使用准确率(accuracy)来评价模型的表现。它等于正确预测数量与总预测数量之比。
'''◼ 下面我们给出准确率计算函数的实现'''
def accuracy(y_hat, y): 
    # 如果真实值y和预测值y_hat相等,那么我们就计算一次,否则不计算
    return (y_hat.argmax(dim=1) == y).float().mean().item()



'''◼ 评价模型 𝐧𝐞𝐭 在数据集 𝐝𝐚𝐭𝐚_𝐢𝐭𝐞𝐫 上的准确率'''
def evaluate_accuracy(data_iter, net):
    acc_sum, n = 0.0, 0  # 刚开始准确计算个数和总共预测的个数都是0
    for X, y in data_iter:  # 迭代器的读取
    # 如果预测准确,那么acc_sum和n都+1;如果不相等,则acc_sum不+1,n+1
    acc_sum += (net(X).argmax(dim=1) == y).float().sum().item()
    n += y.shape[0]
    return acc_sum / n

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值