1.代码实现(lr=0.01)
import numpy as np
import torch
import torch.nn.functional as F
from torch.utils.tensorboard import SummaryWriter
#使用tensorboard进行记录
writer = SummaryWriter(log_dir='../LEDR')
#准备数据集
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[0],[0],[1]])#二分类问题,预测的是种类数
#搭建网络
class LogisticModel(torch.nn.Module):
def __init__(self):
super(LogisticModel, self).__init__()
self.linear = torch.nn.Linear(1,1)
def forward(self,x):
y_pred = F.sigmoid(self.linear(x))#在线性回归后再使用一个逻辑回归函数
return y_pred
model = LogisticModel()
#损失和优化函数
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(params=model.parameters(),lr = 0.01)
#进行训练
for epoch in range(1000):
y_pred = model.forward(x_data)
#计算、打印损失
l = criterion(y_pred,y_data)
writer.add_scalar('LogisticLoss1',l.item(),epoch)
print("Epoch:",epoch,l.item())
#梯度归零、反馈、更新
optimizer.zero_grad()