《PyTorch深度学习实践》学习笔记 【4】

《PyTorch深度学习实践》学习笔记 【4】

学习资源:
《PyTorch深度学习实践》完结合集

六、Logistics Regression(逻辑斯蒂回归模型)

虽然它叫做回归模型,但是处理的是分类问题

6.0 回归问题和分类问题

  • 有监督学习:
    1. 回归问题
    2. 分类问题
      1. 二分类
      2. 多分类

回归问题:如果我们预测的结果是以连续数字进行表示,即我们将在连续函数中对多个输入变量建立映射关系时,则这样的问题称之为回归问题。

分类问题:如果我们预测的结果是以离散形式表示的,即我们将多个输入变量与多个不同的类别建立映射关系时,则这样的问题称之为分类问题。

image-20210815120938860

举个例子:

  • Minist数据集(0-9的数字手写图片)分类问题:

    任务:将图片分类为10个类别(0-9的数字) 。

    实际计算过程是各个数字对应的概率值

    输出概率最大的那个作为分类结果。

多分类问题与二分类问题关系

首先,两类问题是分类问题中最简单的一种。其次,很多多类问题可以被分解为多个两类问题进行求解

6.1 torchvision

import torchvision
train_set = torchvision.datasets.MNIST(root='../dataset/mnist', train=True, download=True)
test_set = torchvision.datasets.MNIST(root='../dataset/mnist', train=False, download=True)

torchvision.datasets :包含了一些经典的数据集

​ 参数说明 1. train:使用训练集 2. download:自动下载

数据集如MNIST,CIFAR10等

6.2 输出的处理

当计算出来的概率是0.5 时, 可以在输出的时候输出“不确定”,有时也直接输出概率

6.3 Logistics函数

功能:把输出的值,把实数值映射到0-1之间

因为多分类问题输出的是一个类别的概率,而不是一个确定的类别。

特点:超过某一个阈值之后,增长速度变慢。(饱和函数)(导数的形状是正态分布的)

image-20210815113753921

相同功能的,还有sigmoid函数(激活函数,增加非线性变化)

image-20210815113832891

现在y^head_1 代表的是概率值P(class=1)

KL散度,

交叉熵(cross-entropy): 描述两个概率分布之间的相似度(后面6.4用到)image-20210815114803407

6.4 BCE LossFunction (binary cross-entropy)

在二分类问题中,y=1或y=0,而y^head 是一个概率值取在[0,1]之间值。

image-20210815114944182

不管y=0还是1,y_head与y越接近,BCE loss越小

image-20210815115125006

6.5 与线性回归的不同

与线性回归只有两处不同

  1. 线性函数后加上了sigmod函数

image-20210815115755917

  1. 损失函数由线性回归的MSE到BCE LossFunction

image-20210815120002022

6.6 处理过程

image-20210815120205186

  1. 数据集准备
  2. 设计模型
  3. 选择损失函数和优化器
  4. 训练

七、处理多维输入

当输入是一个多维数据,来预测对应的分类

7.1 数据集: 样本和特征

image-20210815121713808

7.2 线性回归模型(向量形式处理多维输入)

线性回归模型如下,每一个x_i 都乘以一个权重,用向量表示。

image-20210816100904898

(Pytorch 的sigmoid函数 支持向量操作)

线性层计算过程:整合成矩阵运算(向量化计算,可以利用并行化计算提高计算速度)

image-20210816101007666

线性层的使用:

self.linear1 = torch.nn.Linear(8, 6)

image-20210816101345473

非线性层的使用:

x = self.sigmoid(self.linear1(x))

7.3 学习能力与超参数

层与层的叠加,就是多层神经网络。每层之间的矩阵大小选择,也是超参数的搜索问题

层数太多,学习能力太强,会把噪声的规律也学进来,而抓不住学习的重点。所以层数,每层的维度,是一个超参数搜索问题。

7.4 代码

import torch
import numpy as np

##1. Prepare Dataset
xy = np.loadtxt('diabetes.csv.gz', delimiter=',', dtype=np.float32)
x_data = torch.from_numpy(xy[:,:-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值