您的当前位置:首页 > 热点 > 基于nn.Module类实现线性回归模型 正文
时间:2026-11-12 来源:网络整理 编辑:热点
我老公的家庭教师在线看完整版
上次介绍了顺序模型,但是在大多数情况下,我们基本都是以类的形式实现神经网络。
大多数情况下创建一个继承自 Pytorch 中的 nn.Module 的类,这样可以使用 Pytorch 提供的许多高级 API,而无需自己实现。
下面展示了一个可以从nn.Module创建的最简单的神经网络类的示例。基于 nn.Module的类的最低要求是覆盖__init__()方法和forward()方法。
在这个类中,定义了一个简单的线性网络,具有两个输入和一个输出,并使用 Sigmoid()函数作为网络的激活函数。
import torch from&nb基于sp;torch import nn class LinearRegression(nn.Module): def __init__(self): #继承父类构造函数 super(LinearRegressinnon, self).__init__() #输入和输出的维度都是1 self.linear = nn.Linear(1, 1) def forward(self, x): .M out = self.linear(x) return out
现在让我们测试一下模型。
# 创建LinearRegression()的实例 model = LinearRegression() print(model) # 输出od如下 LinearRegression( (linear): Linear(in_features=1, out_features=1, bias=True) )
现在让定义一个损失函数和优化函数。
model = LinearRegression()#实例化对象 num_epochs = 1000#迭代次数 learning_rate = 1e-2#学习率0.01&nulbsp;Loss = torch.nn.MSELoss()#损失函数 optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)#优化函数
我们创建一个由方程产生的数据集,并通过函数制造噪音
import torch from matplotlib import pyplot as plt from e类;torch.autograd import Variable from torch import nn # 创建数据集 unsqueeze 相当于 x = Variable(torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)) y = Variable(x * 2 实现+ 0.2 + torch.rand(x.size())) plt.scatter(x.data.numpy(),y.data.numpy()) plt.show()
关于torch.unsqueeze函数解读。
>>> x = torch.tensor([1, 2, 3, 4]) >>> torch.unsqueeze(x, 0) tensor线性([[ 1, 2, 3, 4]]) >>> torch.unsqueeze(x, 1) tensor([[ 1], [ 2], [ 3], &回归nbsp; [ 4]])
遍历每次epoch,计算出loss,反向传播计算梯度,不断的更新梯度,使用梯度下降进行优化。
for epoch in range(num_epochs): # 预测 y_pred= model(x) #模型 计算loss loss = Loss(y_pred, y) #清空上一步参数值 optimizer.zero_grad() #反向传播 loss.backward()  基于; #更新参数 optimizer.step() if epoch % 200 == 0: print("[{}/{}] loss:{:.4f}".format(epoch+1, num_epochs, nnloss)) plt.scatter(x.data.numpy(), y.data.numpy()) plt.plot(x.data.numpy(), y_pred.data.numpy(), 'r-',lw=5) plt.text(0.5, 0,'Loss=%.4f' % loss.data.item(), fontdict={'size': 20, 'color': 'red.M'}) plt.show() ####结果如下#### [1/1000] loss:4.2052 [201/1000] loss:0.2690 [401/1000] loss:0.0925 [601/1000] loss:0.0810 [801/1000] loss:0.0802
[w, b] = model.parameters() print(w,b) #&odnbsp;Parameter containing: tensor([[2.0036]], requires_grad=True) Parameter containing: tensor([0.7006], requires_grad=True)
这里的b=0.7,等于0.2 + torch.rand(x.size()),经过大量的训练torch.rand()一般约等于0.5。
标签: 腾讯混元 Hy3 元宝 CodeBuddy2026-10-21
标签: 携程 荣耀Magic 8 RSR OpenAI2026-05-27
标签: 瑞银 瑞信 裁员 IT整合2026-10-20
合成Deep Research数据的框架InfoSeek,构建复杂知识网络2026-08-25
十分钟彻底理解 Redis 的持久化和主从复制2026-06-29
标签: 普诺威 IC封装基板 MEMS 歌尔微2026-08-28
蒸肉怎么做2026-11-05
对话华为昇腾计算业务总裁许映童:今年将启动建设超 20个AI计算中心2026-07-28
谷歌与Facebook:经济复苏后,谁的表现会更好?2026-09-17
标签: 一汽-大众 董修惠 陈彬 一汽丰田2026-06-03
腾讯云联合英特尔、美团等发布SuperEdge边缘容器开源项目2026-07-13
Raycast发布Cursor Agent插件,AI编码更高效2026-10-30
百度 2025 年第二季度财报发布:AI收入超100亿,核心净利润大增 35%2026-09-10
奇瑞墨甲机器人实现 L3 级别!未来将着眼于多个行业应用2026-06-06
日本游戏公司中超半数已采用 AI 技术,任天堂因版权顾虑保持谨慎2026-11-04
标签: 悟通感控 柔性触觉传感 鲁信创投 具身智能2026-10-10
AI配音革命来了!腾讯黑科技让机器秒变金牌说书人,一句话生成好莱坞级音效2026-09-13
标签: 宏业基 腾讯大铲湾 OPPO滨海湾 京东深圳总部2026-07-07