Pytorch教程
目录
1 Pytorch简介
Pytorch是一个能够在GPU和CPU上运行并解决各类深度学习问题的深度学习框架,可以将其看做是支持GPU计算与自动微分计算的Numpy库。
PyTorch是一个灵活的容易学习的Python库,在学术和研究领域PyTorch是最受欢迎的深度学习库。
Pytorch是TensorFlow最强有力的竞争对手。
1.1 pytorch特点
易于使用的API-------像python一样简单。
Python的支持--------Pytorch可以顺利地与python数据科学栈集成。他非常类似于Numpy。
支持分布式训练------ pytorch可实现研究和生产中的分布式训练和性能优化。
部署方便---------pytorch提供了可用于大规模部署pytorch模型的工具。
强大的生态系统------pytorch具有丰富的工具和库等生态系统,为计算机视觉,NLP等方面的开发提供便利。
内置开放神经网络交换协议-----可以很方便与其他深度学习框架互操作。
2 入门实例
2.1 收集数据集
第一步:读取数据集
数据集内容如下:
用数据集的内容绘制的散点图如下:
2.2 创建模型
2.3 训练模型
2.4 使用模型
3 Tensor(张量)
Pytorch最基本的操作对象是Tensor(张量),他表示一个多维矩阵,张量类似于Numpy的ndarrays,张量可以在GPU上使用已加速运算。
构造一个随机初始化矩阵:torch.rand
全0矩阵:torch.zeros
全1矩阵:torch.ones
直接从数据构造张量:torch.tensor
3.1 tensor最基本数据类型
3.2 Tensor(张量)与numpy
3.3 张量运算与形状变换
求均值,求和
打印loss值
3.4 张量与自动微分
4 逻辑回归
4.1 什么是逻辑回归
线性回归预测的是一个连续的值,逻辑回归给出的‘是’和‘否’的回答。
Sigmoid函数是一个概率分布函数,给定某个输入,他将输出为一个概率值。
4.2 逻辑回归损失函数
平方差所惩罚的是与损失为同一数量级的情形,对于分类问题,我们最好使用交叉熵损失函数会更有效。交叉熵会输出一个更大的损失。
4.3 交叉熵损失函数
交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近,假设概率分布P为期望输出,概率分布q为实际输出,H(p,q)为交叉熵,则:
4.4 pytorch交叉熵
5 多层感知器
神经元图示:
5.1 单个神经元的缺陷
无法拟合“异或”运算
异或问题看似简单,使用单层神经元确实无法解决。
神经元要求数据是线性可分的
异或问题无法找到一条直线分割两个类
这个问题是神经网络的发展停止很多年
为了继续使用神经网络解决这种不具备线性可分问题,采取在神经网络的输入端和输出端之间插入更多的神经元。
5.2 常用的激活函数
5.3 多层感知器示例(二分类问题)
1)数据预处理
2)创建模型
3)定义损失函数
5.4 添加验证
了解过拟合与欠拟合
过拟合:对于训练数据过度拟合,对未知数据预测很差
欠拟合:对于训练数据拟合不够,对于未知数据预测很差
将ndarrary 包装成tensor形式,然后再放到数据集里切分
5.5 计算正确率