《PyTorch深度学习实践》第六讲 逻辑斯蒂回归

线性回归与逻辑斯蒂回归作对比

模型

 损失函数

 

二分类损失和小批量的二分类损失

编码步骤

 

写入logistic脚本:

'''
利用pytorch构建模型大多可分为四步:
1、准备数据集
2、模型的构造,定义相应的模型
3、构造损失函数和优化器
4、训练循环
'''
import torch
import torch.nn.functional as F


x_data = torch.Tensor([[1.0],[2.0],[3.0]])    #ctrl+d复制当前行的代码到下一行
y_data = torch.Tensor([[0],[0],[1]])          #逻辑回归其实是分类问题,把输入的数据转化为张量

#逻辑回归其实是分类问题,x对应的y值只能是0或1,LogisticRegressionModel类继承自torch.nn.Module,自动计算梯度
class LogisticRegressionModel(torch.nn.Module):
    def __init__(self):               #构造函数
        super(LogisticRegressionModel,self).__init__()     #super继承
        self.linear = torch.nn.Linear(1,1)             #linear(w,b)

    def forward(self,x):
        y_pred = F.sigmoid(self.linear(x))
        return y_pred

model = LogisticRegressionModel()        #实例化模型

criterion = torch.nn.BCELoss(size_average=False)            #损失函数,二分类交叉熵损失
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)     #定义优化器,随机梯度下降,对model中的参数进行优化,设置学习率

for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)                          #loss会构建计算图

    print(epoch,loss.item())

    optimizer.zero_grad()                         #梯度会累加,需要清零
    loss.backward()                                #损失的反向传播
    optimizer.step()                               #更新

print('w=',model.linear.weight.item())             #打印权重和偏执,位于model中的linear中,去标量值
print('b=',model.linear.bias.item())

x_test = torch.Tensor([[4.0]])                 #输入测试的值
y_test = model(x_test)                         #预测测试的值(概率)
print('y_pred=',y_test.data)

运行结果如下:

迭代100,1000次的结果

        

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值