Pytorch-深度学习实践
文章平均质量分 83
课程B站:刘二大人
深度不学习!!
v a932016561
展开
-
Pytorch----卷积神经网络(CNN,图像边缘检测 , Sobel滤波器 , Scharr滤波器)--入门级小实例(逐行注释)---学习笔记
题目:对任意图片进行简单卷积操作,并提取图片的边缘信息本次使用图片:小练习~卷积实例首先将图片读取进来->转为灰度图->转为numpy数组:# 读图image = Image.open('../data/cat.png')# 转为灰度图image = image.convert("L")# 转为numpy数组image_np = np.array(image)此时得到的numpy数组维度为二维,可以使用shape输出图片大小(719,719) 。将 (719,719) 变原创 2021-11-24 23:13:32 · 5433 阅读 · 3 评论 -
Pytorch---- CIFAR10实战(训练集+测试集+验证集)完整版,逐行注释-----学习笔记
文章目录CIFAR10数据集准备、加载搭建神经网络损失函数和优化器训练集测试集关于argmax:使用tensorboard可视化训练过程。完整代码(训练集+测试集):程序结果:验证集完整代码(验证集):CIFAR10数据集准备、加载解释一下里面的参数 root=数据放在哪。 train=是否为训练集 。 download=是否去网上下载。里面的那个 transform 就是转换数据类型为Tensor类型。准备一个测试集 一个训练集 自动从网上下载好。 大概160MB左右。图片大小是32*32的原创 2021-12-14 18:47:19 · 30998 阅读 · 19 评论 -
Pytorch----入门级CIFAR10的神经网络层,sequential,tansorboard可视化卷积中的各种参数--(逐行注释)---学习笔记l
文章目录普通方法完整代码:sequential 方法使用tansorboard可视化卷积层中的各种数据普通方法使用神经网络: (CIFAR10的神经网络)可以看到输入数据是 3通道3232的图片。经过55的卷积核得到323232的数据。在定义卷积层的时候,看一下padding是多少。可以在官网查到公式:显然 H为32,dilation默认为1,kernel_size= 5,所以这个公式只有 stride和padding不知道了。可以假设stride为1,则此时padding为2,原创 2021-12-09 20:03:45 · 1001 阅读 · 0 评论 -
Pytorch----池化层(平均值池化、最大值池化、自适应最大值池化)--入门级小实例(逐行注释)---学习笔记
文章目录最大值池化层平均值池化层自适应平均值池化层代码实现还是用[上次的小实例] ,这次加入三种池化层做练习。(https://blog.csdn.net/qq_38737428/article/details/121523145)我之前以为池化层也叫下采样,但这样说并不严格,只是大家都这么说,我刚知道,其实采样层包含池化层。某种卷积层也叫采样层。最大值池化层选择每个小区域的最大值作为特征放到结果矩阵,像下面这样。maxpool = nn.MaxPool2d(2,stride=2) # 定义池化原创 2021-12-07 22:41:46 · 21365 阅读 · 1 评论 -
Pytorch ----- tansorboard (add_scalar、add_image) 参数详解+运行实例
tansorboard (add_scalar、add_image) 参数详解+运行实例原创 2021-12-04 21:32:57 · 2869 阅读 · 2 评论 -
Pytorch ----- 循环神经网络 RNN --基础部分(RNN Cell) 附代码解读~~学习笔记
前两天学的卷积神经网络,今天学循环神经网络 RNN。之前在用卷积神经网络的是,一张图片上像素做卷积,所用到的卷积核明确且一整张都用这个卷积核(权重共享)。所以用到的权重少,而全连接层,每一个点对应下一个节点都有一个权重,所以整个网络,全链接层运算量占比大。RNN,专门处理带有 序列模式 的数据(数据前后有序 ,或者本项数据需要前一项数据特征),且采用了共享权重来减少运算量。RNN cell:其中 下面的黄色框的 x1 x2 x3 x4 表示 1 2 3 4 时刻x的输入。上面蓝色框的 h1原创 2021-11-19 15:12:47 · 2083 阅读 · 0 评论 -
Pytorch ----- 卷积神经网络 CNN --进阶部分(GoogLeNet、inception、Residual ) 附代码解读+实现~~学习笔记
基础部分在另一篇文章之前学的卷积神经网络或者其他的 都是线性的,前一层的输出是下一层的输入。像下面这样串起来的。而实际情况远比这复杂的多。下图的网络结构叫 GoogLeNet。蓝色 卷积层, 红色 池化层, 黄色,softmax ,绿色 是拼接层。可以看到图中有很多相同的块,可以封装到一起(叫Inception)到时候调用就行了,不用像上一节一样一层一层写。inception 内部结构:注意图是从下到上走的流程。会自动测试每条路径上的参数的合适情况,赋予不同的权重。蓝色的那个块,原创 2021-11-17 19:21:33 · 1138 阅读 · 0 评论 -
Pytorch ----- 卷积神经网络 CNN --基础部分(卷积层,池化层 下采样) 附代码解读+实现~~学习笔记
全连接网络:每一层串起来了,每一个输出节点都参与了下一层输入节点的权重计算。在前一节。直接使用全连接网络将上面这个图变成一维向量。显然损失了空间状态。现在使用卷积神经网络保留空间状态结构。通过卷积层之后,通道,宽,长都可能变,也可能不变。像下面这样:然后使用下采样,变成了4 * 12 * 12使用下采样,通道数不会变,但宽和高会变。下采样目的就是为了减小数据量,方便运算。然后再通过一次卷积 和一次下采样,得到 8 * 4 * 4。然后直接展开成一维向量,之后全链接层映射到结果分类。原创 2021-11-15 20:40:58 · 7618 阅读 · 0 评论 -
Pytorch -----多分类问题 (Softmax Classifier)原理和代码实现,损失函数NLLLoss和CrossEntropyLossr的用法和区别。
之前的分类都是只有两个分类,是或者不是。今天学一下多分类问题,比如下面这个图。识别这个图中的数字,当输出结果的时候 有 0-9 十个分类结果。比如第一个数字5,经过训练输出可能是 P(Y=5) = 0.9 ,即理解为等于5的概率是90%。但这样有一个问题,如果这个数字特别模糊,可能出现的情况是P(Y=1) = 0.8 ,P(Y=2) = 0.8 , P(Y=5) = 0.9 ,也就是说,这个数字是1的概率是0.8,是2的概率也是0.8,是5的概率是0.9。这样的结果并不利于训练结果的分类。所以我原创 2021-11-12 22:21:38 · 3722 阅读 · 0 评论 -
Pytorch ----- 数据集 (dataset) 数据加载器 (dataloader) num_workeres工作原理 及调整方法 ~~学习笔记
数据集 (dataset): 应该支持索引取数据数据加载器 (dataloader):主要用于拿出mini_batch前几节使用数据直接将数据用文件加载,然后将所有数据都放进去。像这样。。。。。。所有数据都放进去 叫batch。可以最大化向量计算优势(并行),提高计算速度。只用一个样本, 随机梯度下降,帮助克服鞍点问题。但训练时间过长常用Mini_batch 均衡训练时间和性能的需求。Mini-batch 循环使用:嵌套循环,外层循环次数控制,内层每一次执行一个Mini_batch。每一原创 2021-11-09 17:54:38 · 3548 阅读 · 4 评论 -
Pytorch ----- 处理多维特征的输入 ~~学习笔记
前几天学习的是一个x数据对应一个y数据,今天学习多个x数据对应一个y数据的情况。对于下面的数据集,每一行叫做 一个sample 样本,每一列叫做 feature 特征在数据库里 每一行叫 一条记录 record, 每一列叫字段~x1-x8为糖尿病人的八个指标,y是表示一年之后该病人是否病情会复发。之前的1个x对应1个y,而现在的数据集是 8个维度的x对应一个y。所以改变训练模型公式。八个维度的X特征值,每一个都要和其权重相乘。 矩阵形式:带入公式进行变换表示:整体化为矩阵形式:原创 2021-11-05 18:09:48 · 577 阅读 · 0 评论 -
Pytorch ---- 线性模型 学习笔记~~~~~
线性公式 y = w * x (w为权重)MSE: 均方误差 (一种回归损失函数) 当前权重下所有X数据计算出来的y数据(预测数据)和真实的y数据之间的差的平方 除以X的样本数量。MSE越小,说明预测值Y和真实值Y之间误差越小。即当前权重越合理。例子:给定数据:x_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]使用穷举法寻找0~4之间最合适的值。最后使用 matplotlib绘图即可。代码实现:import numpy as npi原创 2021-10-22 00:07:23 · 195 阅读 · 0 评论 -
Pytorch ---- 反向传播 学习笔记~~~~~
前两天学习了线性模型,穷举权重和使用梯度下降法求权重。今天学反向传播。损失公式:W1为权重矩阵。b1(bias)为偏置向量。解释一下为什么这里的W不再是前面学过的单一的权重值而是变成了矩阵。从下图中可以看到,当神经网络有很多层的时候,输入值X也有很多。其中每一个X都对应着后面的一个Y。看下面这张图,显然在第一层,权重W为6*5的矩阵,共30个值。下图为全连接神经网络中的一个层。MM为矩阵乘法。ADD为向量加法。这时候再回头看一下公式:使用第一层的权重W1乘以输入值X加上偏移原创 2021-10-25 18:45:58 · 259 阅读 · 0 评论 -
Pytorch ---- 梯度下降 学习笔记~~~~~
假设所取点为图中红心点。要找到下降的一侧。则求红心点出的导数。按导数定义走。导数大于0,则X往靠近原点的方向走,导数小于0,则X往靠近无穷大的方向走。所以找到负导数的方向。即为下降的方向。所以在梯度下降算法中,更新权重的方法:a为学习率 (即为往前走多少)...原创 2021-10-22 16:38:49 · 661 阅读 · 0 评论 -
Pytorch ---- 实现线性回归 学习笔记(超详细)~~~~~
前两天学习了线性模型,反向传播,梯度下降等基本知识点,且都使用Python实现。今天学习Pytorch进行完整的实现。整体分为四部:1.进行数据集的准备。2.设计模型:这里的模型就是算 y的预测值的。3.构造损失函数和优化器:4.写训练周期:本节中使用的例子训练模型为:这里的y上面一个小帽子就是计算出来的y的预测值。使用数据 :x = [[1.0],[2.0][3.0]]y= [[2.0],[4.0][6.0]]使用mini-batch风格,一次性的将三个样本的结果都求出原创 2021-10-27 16:00:01 · 418 阅读 · 0 评论 -
Pytorch ----逻辑斯蒂回归 (Sigmoid函数) -----分类问题模型,~~学习笔记
说是回归,实际是在讨论分类问题。如下的分类图,里面含有0-9 十个数字。这时候就不能再使用前面几节学过的线性回归模型(y = w * x + b)了,因为图片中的数字并没有对应到实际抽象的数字,我们只做分类,图片类别之间是没有大小的。也就是我们要算出来 根据输入值,算出其属于某一部分的概率。例如之前在线性回归中使用的数据模型:x表示学习几个小时,y表示考试中可以得到几分。而现在的数据模型改为:x依旧是学习几个小时,y变为是否能够通过考试,0不通过,1通过。 此时为明显的分类问题,此处叫二原创 2021-10-31 12:27:37 · 3740 阅读 · 2 评论