《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili

用Pytorch实现逻辑回归

Logistic Regression

从线性回归 →​ 逻辑回归

1、分类问题

计算属于每一类的概率

用 Logistic Function 把实数空间映射到[0,1]的概率范围空间内

 2、模型变化(线性回归 →​ 逻辑回归)

2.1、模型结构变化

2.2、Loss Function的变化

为了计算两个概率之间的差异,需要利用到交叉熵的理论。

BCELoss二分类的交叉熵

y_pred and y_data越接近,BCE Loss越小

3、完整代码

代码框架仍然分为4大部分

import torch
import torch.nn.functional as F ## Prepare Dataset:mini-batch, X、Y是3X1的Tensor
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[0], [0], [1]]) ##Design Model ##构造类,继承torch.nn.Module类
class LogisticRegressionModel(torch.nn.Module):
## 构造函数,初始化对象
def __init__(self):
##super调用父类
super(LogisticRegressionModel, self).__init__()
##构造对象,Linear Unite,包含两个Tensor:weight和bias,参数(1, 1)是w的维度
self.linear = torch.nn.Linear(1, 1) ## 构造函数,前馈运算
def forward(self, x):
## sigmoid(w*x+b)
y_pred = F.sigmoid(self.linear(x))
return y_pred model = LogisticRegressionModel() ##Construct Loss and Optimizer ##损失函数,改为BCELoss
criterion = torch.nn.BCELoss(size_average = False) ##优化器,model.parameters()找出模型所有的参数,Lr--学习率
optimizer = torch.optim.SGD(model.parameters(), lr=0.01) ## Training cycle for epoch in range(100):
y_pred = model(x_data)
loss = criterion(y_pred, y_data)
print(epoch, loss) ##梯度归零
optimizer.zero_grad()
##反向传播
loss.backward()
##更新
optimizer.step() ## Outpue weigh and bias
print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item()) ## Test Model
x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred = ', y_test.data)

最新文章

  1. unix-ln 命令
  2. 移动端网站优化指南-WAP篇
  3. Spring MVC 事务配置
  4. JAVA 实战练习
  5. CentOS安装时小坑记录
  6. org.apache.hadoop.fs-BlockLocation
  7. flex&bison 1
  8. C#日期格式精确到毫秒以及上下午
  9. C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
  10. -_-#【jsonp】cache
  11. Linux文件管理常用命令
  12. Swift - 文本输入框(UITextField)的用法
  13. chapter9_3 协同程序实现迭代器
  14. nyoj_120: 校园网络
  15. C#微信公众号开发——错误一
  16. ide phpStorm注释模板修改
  17. .NET Core 2.1中的HttpClientFactory最佳实践
  18. .NET Core 配置GC工作模式与内存的影响
  19. dedecms怎样调用指定id文章?
  20. 测试服务器上多个tomcat配置Nginx访问

热门文章

  1. @RestControllerAdvice全局异常统一处理
  2. 图解论文《The Part-Time Parliament》
  3. playwright结合pytest使用案例
  4. NOIP 模拟赛 简单题
  5. 软件设计原则(Principles)
  6. Java流程控制:用户交互Scanner、选择结构
  7. Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新
  8. elasticsearch相关概念及常用操作汇总
  9. ionic4 可能忽略的一些细节
  10. u8g2 资料汇集