PyTorch实现线性回归以及多元回归
在本文中,我们将介绍如何使用PyTorch实现线性回归和多元回归。我们将提供两个示例,一个是线性回归,另一个是多元回归。
示例1:线性回归
以下是使用PyTorch实现线性回归的示例代码:
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
# Generate random data
np.random.seed(0)
x = np.random.rand(100, 1)
y = 2 + 3 * x + np.random.rand(100, 1)
# Convert data to tensors
inputs = torch.from_numpy(x).float()
targets = torch.from_numpy(y).float()
# Define linear regression model
model = nn.Linear(1, 1)
# Define loss function
criterion = nn.MSELoss()
# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
# Forward pass
outputs = model(inputs)
loss = criterion(outputs, targets)
# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Print progress
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# Plot the results
predicted = model(inputs).detach().numpy()
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predicted, label='Fitted line')
plt.legend()
plt.show()
在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的线性回归模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们绘制了原始数据和拟合线。
示例2:多元回归
以下是使用PyTorch实现多元回归的示例代码:
import torch
import torch.nn as nn
import numpy as np
# Generate random data
np.random.seed(0)
x = np.random.rand(100, 3)
y = 2 + 3 * x[:,0:1] + 4 * x[:,1:2] + 5 * x[:,2:3] + np.random.rand(100, 1)
# Convert data to tensors
inputs = torch.from_numpy(x).float()
targets = torch.from_numpy(y).float()
# Define linear regression model
model = nn.Linear(3, 1)
# Define loss function
criterion = nn.MSELoss()
# Define optimizer
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Train the model
num_epochs = 1000
for epoch in range(num_epochs):
# Forward pass
outputs = model(inputs)
loss = criterion(outputs, targets)
# Backward and optimize
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Print progress
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# Print the learned coefficients
print('Learned coefficients:')
for name, param in model.named_parameters():
if param.requires_grad:
print(name, param.data)
在这个示例中,我们首先生成了一些随机数据。然后,我们将数据转换为PyTorch张量,并定义了一个名为model的多元回归模型。接下来,我们定义了损失函数和优化器,并使用它们训练模型。最后,我们打印了学习到的系数。
总结
在本文中,我们介绍了如何使用PyTorch实现线性回归和多元回归,并提供了两个示例说明。这些技术对于在深度学习模型中使用回归非常有用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch实现线性回归以及多元回归 - Python技术站