使用pytorch实现逻辑回归
时间: 2023-12-09 08:04:09 浏览: 33
好的,下面是使用 PyTorch 实现逻辑回归的代码示例:
```python
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 定义数据
X = torch.tensor([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0]])
y = torch.tensor([[0.0], [0.0], [1.0], [1.0]])
# 定义模型
class LogisticRegression(nn.Module):
def __init__(self, input_dim, output_dim):
super(LogisticRegression, self).__init__()
self.linear = nn.Linear(input_dim, output_dim)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
out = self.linear(x)
out = self.sigmoid(out)
return out
model = LogisticRegression(input_dim=2, output_dim=1)
# 定义损失函数和优化器
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
# 前向传播
outputs = model(X)
loss = criterion(outputs, y)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印损失值
if (epoch+1) % 100 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
# 预测
with torch.no_grad():
predicted = model(X).round()
print('Predicted Values:', predicted)
```
上述代码中:
- `X` 和 `y` 分别表示输入和输出数据;
- `LogisticRegression` 类定义了模型,其中包含一个线性层和一个 sigmoid 函数,用于计算输出;
- `BCELoss` 是二元交叉熵损失函数,用于计算损失值;
- `SGD` 是随机梯度下降优化器,用于优化模型;
- `num_epochs` 表示训练的次数;
- 在训练过程中,首先进行前向传播计算,然后计算损失值,接着进行反向传播和优化;
- 在训练结束后,使用训练好的模型进行预测,输出预测结果。
注意:在实际应用中,需要对数据进行预处理和归一化等操作。