pytorch 入门【task03】PyTorch实现Logistic regression

本系列博客为跟随开源组织Datawhale学习小组的学习过程记录,任务内容及相关数据集为Datawhale开源组织搜集并无偿提供,饮水思源,特此宣传,欢迎关注Datawhale。
pytorch 入门【task03】PyTorch实现Logistic regression_第1张图片

1、PyTorch基础实现代码
2、用PyTorch类实现Logistic regression,torch.nn.module写网络结构
3、参考资料:PyTorch 中文文档: https://pytorch.apachecn.org/#/

逻辑回归
基于pytorch0.3,代码参考Datawhale

import torch
from torch.autograd import Variable
# 生成训练数据,比如说x为1的时候y为θ类,x为2的时候y为θ类,x为3的时候,y为1类,x为4的时候y为1类
# 我们的目的是找到一组w和b将数据进行预测。
torch.manual_seed(2)
x_data = Variable(torch.Tensor([[1.0], [2.0], [3.0], [4.0]]))
y_data = Variable(torch.Tensor([[0.0], [0.0], [1.0], [1.0]]))

# 初始化
w = Variable(torch.Tensor([-1]), requires_grad = True)
b = Variable(torch.Tensor([0]), requeires_grad = True)
epochs = 100
costs = []
learning_rate = 0.1

# 模型训练
for epoch in range(epochs):
    # 计算梯度
    A = 1 / (1 + torch.exp(-(w * x_data + b)))  # 逻辑回归函数定义
    J = -torch.mean(y_data * torch.log(A) + (1 - y_data) * torch.log(1 - A))# 损失函数
    # J = torch.mean(y_data * torch.log(A) + (1 - y_data) * torch.log(1 - A)) + alpha * w **2
    # 基础类进行正则化,加上L2范数
    costs.append(J.data.numpy()[0])
    J.backward() #自动反向传播

    # 参数更新
    w.data = w.data - learning_rate * w.grad.data
    w.grad.data.zero_()
    b.data = b.data - learning_rate * b.grad.data
    b.grad.data.zero_()

# 模型测试
print('After training, predict of x = 1.5 is :')
print('Y_pred = ', float(w.data* 1.5 + b.data > 0))
print(w.data, b.data)

你可能感兴趣的:(pytorch)