pytorch Loss Functions

1. pytorch中loss函数使用方法示例

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable

# 定义网络时需要继承nn.Module并实现它的forward方法,将网络中具有可学习参数的层放在构造函数__init__中
# 不具有可学习参数的层(如ReLu)既可以放在构造函数中也可以不放

# torch.nn.MaxPool2d和torch.nn.functional.max_pool2d,在pytorch构建模型中,都可以作为最大池化层的引入,但前者为类模块,后者为函数,在使用上存在不同。
# torch.nn.functional.max_pool2d是函数,可以直接调用;torch.nn.MaxPool2d是类模块,要先实例化,再调用其函数。
# torch.nn中其它模块跟torch.nn.functional中其它对应的函数也是类似的用法。
class myNet(torch.nn.Module):
    def __init__(self):
        super(myNet, self).__init__()

        self.conv1 = torch.nn.Conv2d(1,6,5)
        self.conv2 = torch.nn.Conv2d(6,16,5)

        self.fc1 = torch.nn.Linear(16*5*5,120)
        self.fc2 = torch.nn.Linear(120, 84)
        self.fc3 = torch.nn.Linear(84, 10)

        self.pooling = torch.nn.MaxPool2d(2)
        self.activate = torch.nn.ReLU()

    def forward(self, x):
        x = self.pooling(self.activate(self.conv1(x)))
        x = self.pooling(self.activate(self.conv2(x)))
        x = x.view(x.size()[0], -1)
        x = self.activate(self.fc1(x))
        x = self.activate(self.fc2(x))
        x = self.fc3(x)

        return x

input = Variable(torch.randn(1,1,32,32))
net = myNet()          # 创建myNet()对象
output = net(input)    # 调用myNet()对象的forward()方法,有点类似C++中的operator()()
target = Variable(torch.arange(0, 10))
citerion = torch.nn.MSELoss()                    # 创建MSELoss()对象
loss = citerion(output.float(), target.float())  # 调用loss函数
print(loss)

print('*'*30)

net.zero_grad()   # 把net中所有可学习参数的梯度清零
print(net.conv1.bias.grad)
loss.backward()
print(net.conv1.bias.grad)

输出结果:

bash 复制代码
tensor(28.6363, grad_fn=<MseLossBackward0>)
******************************
None
tensor([ 0.1782, -0.0815, -0.0902, -0.0140,  0.0267,  0.0015])

2. pytorch官方支持的loss

https://pytorch.org/docs/stable/nn.html#loss-functions

相关推荐
零域码客26 分钟前
零基础Python爬虫入门:从HTTP协议到 requests + BeautifulSoup 实战
爬虫·python·http
“AI国潮设计-小江”27 分钟前
【SDXL实战】用AI生成“财神爷蛋糕×英歌舞人物”潮汕国潮甜品IP,附Prompt与批量生成思路
开发语言·人工智能·python·aigc
DD云验证29 分钟前
DD云验证,免费网络验证系统
服务器·python·易语言·网络验证·卡密验证
技术狂人16838 分钟前
WAM-Trainer世界动作模型训练实战:IDM/FDM模块化架构与DeepSpeed ZeRO-2多卡训练
pytorch·具身智能·deepspeed·世界动作模型·idm逆动力学
茶栀(*´I`*)41 分钟前
【Python数据分析利器】Pandas从入门到实战:核心数据结构DataFrame与Series全解析
python·数据分析·pandas
码云数智-大飞43 分钟前
新手写 Python 代码,如何规范命名、减少 Bug
开发语言·python·php
天天被压力1 小时前
【别再到处找免费股票数据API了:官方204个接口,32篇一次讲透 #06】Python实时行情总报错?五档盘口+逐笔一次跑通
java·人工智能·python
智能RPA1 小时前
农业与矿业行业智能体自动化平台对比评测(计量与巡检场景)
运维·人工智能·python·自动化·agent·rpa
溪语流沙1 小时前
Django + Vue电商项目第005讲:后端骨架|Django初始化、配置分层与DRF接入
vue.js·后端·python·django
代码方舟1 小时前
Python数据工程:利用天远全能消金报告优化消费金融合规体验
人工智能·python