torch 逻辑回归
时间: 2023-08-16 18:06:17 浏览: 108
逻辑回归是一种用于二元分类的机器学习算法。与线性回归不同,逻辑回归输出的是样本对应的概率,而不是连续的数值。在构建模型时,逻辑回归比线性回归多了一步使用sigmoid函数对线性输出进行非线性化处理。[1]
在PyTorch中,可以使用torch.nn.Module来定义逻辑回归模型。下面是一个简单的逻辑回归模型的示例代码:
```python
import torch
import torch.nn.functional as F
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[0],[0],[1]])
class LogisticRegressionModel(torch.nn.Module):
def __init__(self):
super(LogisticRegressionModel, self).__init__()
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
y_pred = F.sigmoid(self.linear(x))
return y_pred
model = LogisticRegressionModel()
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
for epoch in range(100):
y_pred = model(x_data)
loss = criterion(y_pred, y_data)
print("当前的epoch:", epoch, 'loss的值为:', loss.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()
```
在这个示例中,我们定义了一个LogisticRegressionModel类,继承自torch.nn.Module。模型中包含一个线性层torch.nn.Linear(1, 1),输入维度为1,输出维度为1。在forward方法中,我们使用sigmoid函数对线性输出进行非线性化处理。然后,我们定义了损失函数torch.nn.BCELoss()和优化器torch.optim.SGD()。在训练过程中,我们通过循环迭代来更新模型的参数,使得损失函数的值逐渐减小。[2]
在逻辑回归中,我们可以根据模型的输出概率来进行分类。例如,如果输出概率大于0.5,则将样本分类为正类;否则,将样本分类为负类。[3]
阅读全文