import torch x_data = torch.tensor([[1.0], [2.0], [3.0]]) y_data = torch.tensor([[2.0], [4.0], [6.0]]) 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=torch.sigmoid(self.linear(x)) return y_pred model=LogisticRegressionModel() #BCELoss 是CrossEntropyLoss的一个特例,只用于二分类问题 # CrossEntropyLoss可以用于二分类,也可以用于多分类。 #如果是二分类问题,建议BCELoss # construct loss and optimizer # 默认情况下,loss会基于element平均,如果size_average=False的话,loss会被累加。 # criterion=torch.nn.BCELoss(size_average=False) #model.parameters()为该实例中可优化的参数 #lr为参数优化的选项(学习率等) optimizer=torch.optim.SGD(model.parameters(),lr=0.01) for epoch in range(1000000): y_pred=model(x_data) loss=criterion(y_pred,y_data) print(epoch,loss.item()) optimizer.zero_grad() loss.backward() #optimizer.step() # update 参数,即更新w和b的值 optimizer.step() print('w = ', model.linear.weight.item()) print('b = ', model.linear.bias.item()) x_test = torch.tensor([[4.0]]) y_test = model(x_test) print('y_pred = ', y_test.data)