pytorch中的线性回归
时间: 2023-10-21 11:06:35 浏览: 111
在PyTorch中,线性回归可以通过定义一个全连接层来实现。全连接层在nn.Linear类中定义。我们可以使用nn.Sequential将其包装起来。需要注意的是,我们需要将输入特征形状和输出特征形状作为参数传递给nn.Linear。例如,如果输入特征形状是2,输出特征形状是1,我们可以这样定义线性回归模型:
```
from torch import nn
net = nn.Sequential(nn.Linear(2, 1))
```
在定义模型之前,我们需要初始化模型的参数。我们可以使用torch.normal来随机初始化参数,并将requires_grad设置为True以便计算梯度。例如:
```
w = torch.normal(0, 0.01, size=(2,1), requires_grad=True)
b = torch.zeros(1, requires_grad=True)
```
定义了模型和参数之后,我们可以定义损失函数。对于线性回归来说,通常使用均方损失函数。例如:
```
def squared_loss(y_hat, y):
return (y_hat - y.reshape(y_hat.shape)) ** 2 / 2
```
另外,我们可以使用PyTorch的数据工具来生成和读取数据集。例如,我们可以使用d2l.synthetic_data来生成数据集,然后使用data.DataLoader来读取数据集。以下是一个简单的示例:
```
from torch.utils import data
from d2l import torch as d2l
true_w = torch.tensor([2, -3.4])
true_b = 4.2
features, labels = d2l.synthetic_data(true_w, true_b, 1000)
def load_array(data_arrays, batch_size, is_train=True):
dataset = data.TensorDataset(*data_arrays)
return data.DataLoader(dataset, batch_size, shuffle=is_train)
batch_size = 10
data_iter = load_array((features, labels), batch_size)
next(iter(data_iter))
```
阅读全文