剑魂 发表于 2024-6-7 17:01:01

【深度学习实战】线性回归问题

import numpy as np
import torch
import torch.nn as nn
np.random.seed(42)
# 生成随机数据
x = np.random.rand(100,1)
y = 1 + 2*x + 0.1*np.random.randn(100,1)
# 将数据转化成pytorch tensor
x_tensor = torch.from_numpy(x).float()
y_tensor = torch.from_numpy(y).float()
# 设置超参数
learning_rate = 0.1
num_epochs = 1000
input_dim = 1
output_dim = 1
model = nn.Linear(input_dim,output_dim)
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(),lr = learning_rate)
# 开始训练
for epoch in range(num_epochs):
    y_pred = model(x_tensor)
    loss = criterion(y_pred,y_tensor)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
print("w:",model.weight.data)
print("b:",model.bias.data)

FishC 发表于 2024-6-7 17:01:09

这段代码是一个简单的线性回归问题的实现。让我们逐行来解释一下。

首先,导入必要的库并设置随机种子,以确保结果的可重复性:

import numpy as np
import torch
import torch.nn as nn
np.random.seed(42)

然后,生成随机数据集。这里使用了numpy库来生成100个随机数作为输入特征x,并生成对应的输出标签y:

x = np.random.rand(100,1)
y = 1 + 2*x + 0.1*np.random.randn(100,1)

接下来,将生成的数据转化成PyTorch Tensor,以便与PyTorch模型进行计算:

x_tensor = torch.from_numpy(x).float()
y_tensor = torch.from_numpy(y).float()

然后,设置学习率、迭代次数、输入和输出维度,并初始化线性模型、损失函数和优化器:

learning_rate = 0.1
num_epochs = 1000
input_dim = 1
output_dim = 1
model = nn.Linear(input_dim,output_dim)
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)

接下来是模型的训练过程。在每个epoch中,通过模型前向传播获得预测结果y_pred,计算当前的损失值loss,然后通过反向传播更新模型参数:

for epoch in range(num_epochs):
    y_pred = model(x_tensor)
    loss = criterion(y_pred, y_tensor)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

最后,输出线性模型的权重和偏置:

print("w:", model.weight.data)
print("b:", model.bias.data)

这样就完成了线性回归问题的训练和预测过程。希望这个解释对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 【深度学习实战】线性回归问题