pytorch
文章平均质量分 91
羞儿
和我一起学习吧,有问题请积极讨论。费曼学习法,论证,整合,再论证,再整合。
展开
-
pytorch的基本运算,是不是共享了内存,有没有维度变化
以及张量的各类计算。张量作为有序的序列,也是具备数值索引的功能,并且基本索引方法和Python原生的列表、NumPy中的数组基本一致,当然,所有不同的是,PyTorch中还定义了一种采用函数来进行索引的方式。二维张量的索引逻辑和一维张量的索引逻辑基本相同,二维张量可以视为两个一维张量组合而成,而在实际的索引过程中,需要用逗号进行分隔,分别表示对哪个一维张量进行索引、以及具体的一维张量的索引。在很多数值科学计算的过程中,都会创建一些特殊取值的张量,用于模拟特殊取值的矩阵,如全0矩阵、对角矩阵等。原创 2023-10-11 20:35:05 · 481 阅读 · 1 评论 -
pytorch-模型构建,参数访问,模型存取API接口,对比学习
有时候我们需要的初始化方法并没有在init模块中提供。这时,可以实现一个初始化方法,从而能够像使用其他初始化方法那样使用它。在这之前我们先来看看PyTorch是怎么实现这些初始化方法的,例如:可以看到这就是一个inplace改变Tensor值的函数,而且这个过程是不记录梯度的。类似的我们来实现一个自定义的初始化方法。在下面的例子里,我们令权重有一半概率初始化为0,有另一半概率初始化为[-10,-5]和[5,10]两个区间里均匀分布的随机数。还可以通过改变这些参数的data。原创 2023-03-04 10:38:10 · 551 阅读 · 0 评论 -
pytorch-在竞赛中去摸索用法,用房价预测比赛了解数据处理流程
在预测之前,我们会使用完整的训练数据集来重新训练模型,并将预测结果存成提交所需要的格式。如果得到与交叉验证时差不多的训练误差,那么这个结果很可能是理想的,可以在Kaggle上提交结果。这时,我们可以在Kaggle上提交我们预测得出的结果,并且查看与测试数据集上真实房价(标签)的误差。举个例子,假设特征MSZoning里面有两个不同的离散值RL和RM,那么这一步转换将去掉MSZoning特征,有时候你会发现一组参数的训练误差可以达到很低,但是在K折交叉验证上的误差可能反而较高。得到标准化后的每个特征值。原创 2023-03-04 09:26:18 · 835 阅读 · 0 评论 -
pytorch-模型训练中过拟合和欠拟合问题。从模型复杂度和数据集大小排查问题
需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,**前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似**。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。原创 2023-03-03 14:40:57 · 2090 阅读 · 0 评论 -
pytorch-模型训练常用的torchvision包。关于数据、模型、数据增强、优化器、损失函数。用官方的实现,自定义模型训练
对于图像任务,创建了一个包 `torchvision`,它包含了处理一些基本图像数据集的方法。这些数据集包括 Imagenet, CIFAR10, MNIST 等。除了数据加载以外,`torchvision` 还包含了图像转换器, `torchvision.datasets` 和 `torch.utils.data.DataLoader`。原创 2023-03-03 09:14:36 · 508 阅读 · 0 评论 -
pytorch-复现经典深度学习模型-LeNet5
在模型中必须要定义forward函数,backward函数(用来计算梯度)会被autograd自动创建。可以在forward函数中使用任何针对 Tensor 的操作。torch.nn只支持小批量输入。整个torch.nn包都只支持小批量样本,而不支持单个样本。例如,nn.Conv2d接受一个4维的张量,每一维分别是sSamples * nChannels * Height * Width(样本数*通道数*高*宽)。如果你有单个样本,只需使用来添加其它的维数。返回可被学习的参数(权重)列表和值。原创 2023-03-02 11:23:05 · 429 阅读 · 0 评论 -
pytorch-多层感知机,最简单的深度学习模型,将非线性激活函数引入到模型中。
多层感知机,线性回归和softmax回归在内的单层神经网络。然而深度学习主要关注多层模型。在本节中,我们将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。隐藏层X∈Rn×dHH∈Rn×hWh∈Rd×hbh∈R1×hWo∈Rh×qbo∈R1×qO∈Rn×qHOXWhbhHWoboOXWhbhWo。原创 2023-03-02 10:31:26 · 646 阅读 · 0 评论 -
pytorch-softmax解决分类问题,用fashion-mnist为例子,再走一遍数据获取到模型预测的流程。深度了解分类指标的递进关系
softmax回归的输出层是一个全连接层,所以我们用一个线性模块就可以了。因为前面我们数据返回的每个batch样本x的形状为(batch_size, 1, 28, 28), 所以我们要先用view()将x的形状转换成(batch_size, 784)才送入全连接层。将对x的形状转换的这个功能自定义一个`FlattenLayer。然后,使用均值为0、标准差为0.01的正态分布随机初始化模型的权重参数。使用学习率为0.1的小批量随机梯度下降作为优化算法。原创 2023-03-01 18:58:02 · 922 阅读 · 0 评论 -
pytorch-把线性回归实现一下。原理到实现,python到pytorch
方差的本质是任意一个值和样本均值的差异,差异越大,这些值所带的信息越多.在R2中,分子是真实值和预测值之差的差值,也就是我们的模型没有捕获到的信息总量,分母是真实标签所带的信息量,所以两者都衡量。torch.mul(a, b) 是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵;标签形状为批量大小。torch.mm(a, b) 是矩阵a和b矩阵相乘,比如a的维度是(1, 2),b的维度是(2, 3),返回的就是(1, 3)的矩阵;原创 2023-02-28 20:22:17 · 419 阅读 · 1 评论 -
pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化
假设我们有一个复杂的神经网络模型,我们把它想象成一个错综复杂的管道结构,不同的管道之间通过节点连接起来,我们有一个注水口,一个出水口。比如有的时候在一个变量已经参与了正向传播的计算,之后它的值被修改了,在做反向传播的时候如果还需要这个变量的值的话,我们肯定不能用那个后来修改的值吧,但没修改之前的原始值已经被释放掉了,我们怎么办?但这句话反过来说就是,因为只要有 inplace 操作不当就会报错,所以如果我们在程序中使用了 inplace 操作却没报错,那么说明我们最后求导的结果是正确的,没问题的。原创 2023-02-27 16:10:04 · 876 阅读 · 0 评论 -
pytorch的操作对象-张量。加强的numpy矩阵,重点了解内存分配机制广播机制
所有的 Tensor 类型默认都是基于CPU, CharTensor 类型不支持到 NumPy 的转换. CUDA 张量使用.to 方法 可以将Tensor移动到任何设备中。tensor运算的内存开销:索引,view()是不会开辟新的内存的,而像y=x+y这样的运算是会开辟新的内存的,然后y指向新的内存。创建一个 5x3 矩阵, 但是未初始化,empty方法创建的矩阵不是空矩阵,而是未初始化的矩阵,所以里面的值不一定是0。这些方法将重用输入张量的属性,例如, dtype,除非设置新的值进行覆盖。原创 2023-02-27 09:20:47 · 259 阅读 · 0 评论 -
了解pytorch,梳理一下pytorch的几个组件
pytorch的安装经过了几次变化,请大家以官网的安装命令为准。另外需要说明的就是在1.2版本以后,pytorch只支持cuda 9.2以上了,所以需要对cuda进行升级,目前测试大部分显卡都可以用,包括笔记本的MX250也是可以顺利升级到cuda 10.1。不错的的文档(相比FB的其他项目,PyTorch的文档简直算是完善了,参考Thrift),PyTorch作者亲自维护的论坛 供用户交流和求教问题。PyTorch的安装十分简单,根据PyTorch官网,对系统选择和安装方式等灵活选择即可。原创 2023-02-27 09:15:35 · 324 阅读 · 0 评论