
Pytorch相关
文章平均质量分 65
Pytorch框架相关的问题,类、方法...
Pengsen Ma
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
用torch.nn.Sequential()搭建神经网络模型
目录一、第一种方式(可以配合一些条件判断语句动态添加)二、第二种方式三、第三种方式torch.nn.Sequential是一个Sequential容器,模块将按照构造函数中传递的顺序添加到模块中。通俗的话说,就是根据自己的需求,把不同的函数组合成一个(小的)模块使用或者把组合的模块添加到自己的网络中。一、第一种方式(可以配合一些条件判断语句动态添加)模板——torch.nn.Sequential()的一个对象.add_module(name, module)。 name:某层次的名原创 2021-05-14 21:20:26 · 25568 阅读 · 5 评论 -
PyTorch下的网络可视化方式和工具
可视化网络总共有三个工具:1.1 通过HiddenLayer可视化网络1.2 通过PyTorchViz可视化网络1.3使用Netron可视化1.1 + 1.2 的使用方法如下:PyTorch下的可视化工具 - 知乎1.3的使用方法:使用pytorchviz和Netron可视化pytorch网络结构_-牧野-的博客-优快云博客_netron pytorch有一个问题就是:解决 HiddenLayer 可视化不显示神经网络数据流维度大小?找到 pytorch_builde.原创 2022-05-04 16:00:37 · 1456 阅读 · 0 评论 -
将当前conda环境导出为yaml / yml文件
注:.yaml文件移植过来的环境只是安装了你原来环境里用conda install等命令直接安装的包,你用pip之类装的东西没有移植过来,需要你重新安装。当我们想再次创建该环境,或根据别人提供的.yaml文件复现环境时,就可以通过下面的命令来复现安装环境了。conda导出已有环境,环境会被保存在environment.yaml文件中。conda环境的转移和复制。原创 2023-06-26 21:37:08 · 5633 阅读 · 1 评论 -
python将列表中的每个元素进行一种处理:map()
python将列表中的每个元素进行一种处理:map()原创 2023-01-10 09:59:23 · 1444 阅读 · 0 评论 -
9.多分类问题(analysis + code)
There are 10 labels in MNIST dataset. How to design the neural network?如果使用原来的7.节的sigmode作为最后一层的激活层会有什么问题?(Design 10 Outputs using Sigmode?)如果使用sigmode函数就将多分类问题看成多个二分类问题(二分类实现多分类 - 努力的孔子 - 博客园),这样加大了计算的复杂度,并且最后的输出也不是一个分布,而是多个二分类的概率,我们期望的是输出的10类,每.原创 2022-05-10 09:47:03 · 728 阅读 · 0 评论 -
加载数据集(Dataset、DataLoader、Sampler)、pin_memory、num_workers
关于 Epoch、Batch-Size、Iteration的解释请看:epochs,batch_size,iterations详解_马鹏森的博客-优快云博客DataLoader接收4个参数:分别是实例化后 dataset = Dataset()、batch_size、shuffle、num_workerstrain_loader = DataLoader(dataset=dataset, batch_size=32, shuffle=True, num_workers=2) Dat...原创 2022-05-09 20:07:05 · 3792 阅读 · 0 评论 -
7.处理多维特征的输入(Analysis + Code)
来源于:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili此时我们使用:“Diabetes Datasets.csv”来做一个分类任务,“Diabetes Datasets”的数据样式如下所示:其中CSV文件的某一行为一个Sample,某一列为Feature(习惯这么叫)由于是多维的特征输入而不是一维的特征输入,多维数据的输入可以看成矩阵进行运算,这里我们使用单Linear层做拟合,这样它只是一个线性层进行拟合数据,很有可能会导致拟合不准确,所以下面我们使用多..原创 2022-05-09 11:04:00 · 821 阅读 · 0 评论 -
TypeError:‘tuple‘ object is not callable
报错:Type错误:元组不可调用 == 存在元组在调用参数;出现该错误就要考虑是不是有的地方写成元组了,也就是多半是逗号 “,” 的问题,删除逗号即可!实例:存在错误的代码:class Net(nn.Module): def __init__(self, in_dim, n_hidden_1, n_hidden_2, out_dim): super(Net, self).__init__() self.linear1 = nn.Linea..原创 2022-05-07 11:13:36 · 3822 阅读 · 6 评论 -
【实战】PyTorch 在 CIFAR-10 数据集上的训练及测试过程
basic settingimport matplotlib.pyplot as plt # plt 用于显示图片import numpy as npimport torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transforms# 设备设置torch.cuda.set_device(0) # 这句用来设置pytorch在哪块GPU上运行,pytorch-cpu版本不需要运行这原创 2022-05-06 19:21:19 · 1846 阅读 · 0 评论 -
4.Deep Residual Network
Refer to the structure and details of the network:PyTorch 中级篇(2):深度残差网络(Deep Residual Networks) | SHEN's BLOGThe complete code:# ---------------------------------------------------------------------------- ## An implementation of https://arxiv...原创 2022-05-06 16:20:03 · 207 阅读 · 0 评论 -
3.Logistic Regression
the difference of logistc regression and linear regression is the code of :# Linear regression model 一个输入一个输出model = nn.Linear(1, 1)# Logistic regression model 多个输入,多个输出model = nn.Linear(28*28, 10) import torchimport torch.nn as nnimport原创 2022-05-06 10:41:53 · 213 阅读 · 0 评论 -
2、Linear Regression(线性回归的使用)一个输入对应一个输出
06 | 线性回归模型:在问题中回顾与了解基础概念_马鹏森的博客-优快云博客import torchimport torch.nn as nnimport numpy as npimport matplotlib.pyplot as plt# Hyper-parametersinput_size = 1output_size = 1num_epochs = 60learning_rate = 0.001# Toy datasetx_train = np.array(.原创 2022-05-06 09:19:04 · 1281 阅读 · 0 评论 -
1、PyTorch Basics(PyTorch 一些基础知识)
1、2、关于梯度、求导...一个简单的神经网络过程3、numpy与torch的转换4、构建输入数据流(利用已有的CIFAR10数据集)5、构建输入数据流(自己定制数据流)6、怎么使用一个预训练模型,然后fine-tune7、保存和加载模型1、2、关于梯度、求导...一个简单的神经网络过程前向传播得到预测值-->求预测值与真实值的损失--> 优化器梯度清零-->反向传播求所有参数的梯度 -->优化器更新梯度# =======...原创 2022-05-06 09:07:21 · 335 阅读 · 0 评论 -
【pytorch】torch.range() 和 torch.arange() ==>以step为间隔输出从start到end的张量列表
Parameters start(Number) – the starting value for the set of points. Default:0. end(Number) – the ending value for the set of points step(Number) – the gap between each pair of adjacent points. Default:1. >>> y=torch.range(1,...原创 2021-07-11 16:34:22 · 16812 阅读 · 0 评论 -
【Pytorch 】nn.functional.unfold()==>卷积操作中的提取kernel filter对应的滑动窗口
unfold的作用就是手动实现(卷积中)的滑动窗口操作,也就是只有卷,没有积return = F.unfold(input, kernel_size, dilation=1, padding=0, stride=1):input:输入Tensor,必须是四维的(B, C, H, W), Batchsize, channel, height, width kernel_size:元组,表示滑动窗口大小,决定输出tensor的数目 dilation: 输出形式是否有间隔 pa.原创 2021-06-24 11:25:11 · 17143 阅读 · 0 评论 -
【PyTorch】torch.cat()
1. 字面理解:torch.cat是将两个张量(tensor)拼接在一起,cat是concatenate的意思,即拼接,联系在一起。2. 例子理解>>> import torch>>> A=torch.ones(2,3) #2x3的张量(矩阵) >>> Atensor([[ 1., 1., 1.], [ 1., 1., 1.]])>...原创 2021-06-24 09:28:50 · 20423 阅读 · 8 评论 -
【pytorch 】torchvision.transforms.CenterCrop==>从图像中心裁剪图片
transforms.CenterCroptorchvision.transforms.CenterCrop(size)功能:从图像中心裁剪图片size: 所需裁剪的图片尺寸transforms.CenterCrop(196)的效果如下: (也可以写成transforms.CenterCrop((196, 196)) )如果裁剪的 size 比原图大,那么会填充值为 0 的像素。`transforms.CenterCrop(512)`的效果如下:https://w..原创 2021-06-13 15:08:11 · 23219 阅读 · 0 评论 -
with torch.no_grad()、.requires_grad ==False的区别?以及什么时候使用?
requires_gradVariable变量的requires_grad的属性默认为False,若一个节点requires_grad被设置为True,那么所有依赖它的节点的requires_grad都为True。x=Variable(torch.ones(1))w=Variable(torch.ones(1),requires_grad=True)y=x*wx.requires_grad,w.requires_grad,y.requires_gradOut[23]: (False, Tr原创 2021-06-08 15:33:19 · 17266 阅读 · 1 评论 -
pytorch的4种边界Padding方法--ZeroPad2d、ConstantPad2d、ReflectionPad2d、ReplicationPad2d
目录1、零填充ZeroPad2d2、常数填充ConstantPad2d3、镜像填充ReflectionPad2d4、重复填充ReplicationPad2d卷积操作作为卷积神经网络的核心模块,在其计算过程中必须考虑图像“边缘像素”的卷积方式。我们可以采用“卷积之前进行边界填充”或“卷积之后进行边界填充两种方式”,同时边界填充的具体手段包含常量填充、零填充、镜像填充以及重复填充等。在具体分析各种Padding之前,先创建一个2dTensor用于测试后面的填充操作:import t原创 2021-06-06 10:43:14 · 24900 阅读 · 2 评论 -
混合精度训练amp,torch.cuda.amp.autocast():
1 需要什么GPU:在上面讲述了为什么利用混合精度加速,需要拥有 TensorCore 的GPU0x02. 基础理论:在日常中深度学习的系统,一般使用的是单精度 float(Single-Precision)浮点表示。在了解混合精度训练之前,我们需要先对其中的主角半精度『float16』进行一定的理论知识学习。float vs float16 的组成bitmap在上图可以看到,与单精度float(32bit,4个字节)相比,半进度float16仅有16bit,2个字节组成。天然的存储原创 2021-07-17 08:44:01 · 23297 阅读 · 3 评论 -
【pytorch】torch.randperm(n)==》返回n个从(0,n-1)中整数的随机序列
torch.randperm(n,*,generator=None,out=None,dtype=torch.int64,layout=torch.strided,device=None,requires_grad=False,pin_memory=False)→ TensorfunctionReturns a random permutation of integers from (0ton-1).Parametersn(int) – the upper bound...原创 2021-10-05 11:14:48 · 16907 阅读 · 0 评论 -
【PyTorch】torch.gather() 用法
相当于numpy中resize()的功能,但是用法可能不太一样。reshape()我的理解是:把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。比如,a=torch.Tensor([[[1,2,3],[4,5,6]]])原创 2024-04-21 09:48:04 · 17434 阅读 · 1 评论 -
【pytorch】named_parameters()、parameters()、state_dict()==>给出网络的名字和参数的迭代器
torch中存在3个功能极其类似的方法,它们分别是model.parameters()、model.named_parameters()、model.state_dict(),下面就具体来说说这三个函数的差异:1.首先,说说比较接近的model.parameters()和model.named_parameters()。这两者唯一的差别在于,named_parameters()返回的list中,每个元组(与list相似,只是数据不可修改)打包了2个内容,分别是layer-name和layer-para原创 2021-06-08 09:05:41 · 19323 阅读 · 0 评论 -
【pytorch】torch.nn.Identity()
identity模块不改变输入,直接return input一种编码技巧吧,比如我们要加深网络,有些层是不改变输入数据的维度的,在增减网络的过程中我们就可以用identity占个位置,这样网络整体层数永远不变,应用:例如此时:如果此时我们使用了se_layer,那么就SELayer(dim),否则就输入什么就输出什么(什么都不做)...原创 2021-07-13 20:33:04 · 21928 阅读 · 0 评论 -
ReflectionPad2d--利用输入边界的反射来填充输入张量
目录介绍1. 填充一个整数2. 填充多个整数介绍torch.nn.ReflectionPad2d(padding)这个函数简单来说就是:利用输入边界的反射来填充输入张量官方文档里给了该padding的输入输出如下所示:CLASS torch.nn.ReflectionPad2d(padding: Union[T, Tuple[T, T, T, T]])import torchimport torch.nn as nnm = nn.ReflectionPad2.原创 2021-06-04 09:03:05 · 17029 阅读 · 1 评论 -
Conv2d
一、用法Conv2d(in_channels, out_channels, kernel_size, stride=1,padding=0, dilation=1, groups=1,bias=True, padding_mode=‘zeros’)二、参数in_channels:输入的通道数目 【必选】 out_channels: 输出的通道数目 【必选】 kernel_size:卷积核的大小,类型为int 或者元组,当卷积是方形的时候,只需要一个整数边长即可,卷积不是方形,要输入一个元原创 2021-04-06 17:19:51 · 17671 阅读 · 0 评论 -
【pytorch】torch.cuda.empty_cache()==>释放缓存分配器当前持有的且未占用的缓存显存
Pytorch 训练时无用的临时变量可能会越来越多,导致out of memory,可以使用下面语句来清理这些不需要的变量。torch.cuda.empty_cache()官网上的解释为:Releases all unoccupied cached memory currently held by the caching allocator so that those can be used in other GPU application and visible invidia-sm...原创 2021-06-14 15:58:05 · 32736 阅读 · 0 评论 -
反卷积--上采样的一种方法以及其实现方法ConvTranspose2d
上采样(Upsample)在应用在计算机视觉的深度学习领域,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算,这个采用扩大图像尺寸,实现图像由小分辨率到大分辨率的映射的操作,叫做上采样(Upsample)。反卷积(Transposed Convolution)上采样有3种常见的方法:双线性插值(bilinear) 反卷积(Transposed Convolution) 反池化(Unpooling)我们这里只原创 2021-03-13 10:21:32 · 18840 阅读 · 0 评论 -
pytorch保存和加载文件的方法,从断点处继续训练
'''本文件用于举例说明pytorch保存和加载文件的方法'''import torch as torchimport torchvision as tvimport torch.nn as nnimport torch.optim as optimimport torch.nn.functional as Fimport torchvision.transforms as transformsimport os# 参数声明batch_size = 32epochs = 10.原创 2021-03-25 21:07:56 · 16726 阅读 · 0 评论 -
torch.nn.DataParallel()--多个GPU加速训练
公司配备多卡的GPU服务器,当我们在上面跑程序的时候,当迭代次数或者epoch足够大的时候,我们通常会使用nn.DataParallel函数来用多个GPU来加速训练。一般我们会在代码中加入以下这句:device_ids = [0, 1]net = torch.nn.DataParallel(net, device_ids=device_ids)似乎只要加上这一行代码,你在ternimal下执行watch -n 1 nvidia-smi后会发现确实会使用多个GPU来并行训练。但是细心点会发现其实第原创 2021-06-05 09:07:25 · 18899 阅读 · 2 评论 -
Tensorflow静态图、PyTorch动态图机制
https://zhuanlan.zhihu.com/p/191648279PyTorch 的动态图机制PyTorch 采用的是动态图机制 (Dynamic Computational Graph),而 Tensorflow 采用的是静态图机制 (Static Computational Graph)。动态图是运算和搭建同时进行,也就是可以先计算前面的节点的值,再根据这些值搭建后面的计算图。优点是灵活,易调节,易调试。PyTorch 里的很多写法跟其他 Python 库的代码的使用方法是原创 2021-06-30 09:35:07 · 19339 阅读 · 0 评论 -
【PyTorch 】interpolate()==>上下采样函数
def interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None): # noqa: F811 # type: (Tensor, Optional[int], Optional[List[float]], str, Optional[bool], Optional[bool]) -> Tensor r"""Down/.原创 2021-06-14 11:08:03 · 18479 阅读 · 0 评论 -
【PyTorch】PixelShuffle
https://blog.youkuaiyun.com/gdymind/article/details/82388068定义该类定义如下:class torch.nn.PixleShuffle(upscale_factor)这里的upscale_factor就是放大的倍数。ps = nn.PixelShuffle(3)# 缩放到三倍,r == 3input = torch.tensor(1, 9, 4, 4)## r^2 C == 9,所以C == 1output = ps(input原创 2021-06-23 19:50:48 · 16630 阅读 · 0 评论 -
【pytorch】torch.meshgrid()==>常用于生成二维网格,比如图像的坐标点
np.meshgrid()函数常用于生成二维网格,比如图像的坐标点。x1 ,y1 = torch.meshgrid(x,y)输入参数:参数是两个,第一个参数我们假设是x,第二个参数假设就是y输出:输出的是两个tensor,size就是(x.size * y.size)(行数是x元素的个数,列数是y元素的个数)具体输出看下面注意:两个参数的数据类型要相同,要么都是float,要么都是int,否则会报错。原文链接:https://blog.youkuaiyun.com/qq_41375.原创 2021-07-12 21:14:10 · 19455 阅读 · 0 评论 -
【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法
目录PyTorch中的is_contiguous是什么含义?行优先为什么需要contiguous?contiguous本身是形容词,表示连续的,关于contiguous,PyTorch 提供了is_contiguous:用于判定Tensor是否是contiguous的, contiguous(形容词动用)两个方法 :保证Tensor是contiguous的。PyTorch中的is_contiguous是什么含义?is_contiguous直观的解释是Tensor底...原创 2021-07-14 10:47:56 · 16880 阅读 · 1 评论 -
【Pytorch】 .item()==>得到元素张量里面的一个元素值,便可以循环、查看...操作
Any operation that mutates a tensor in-place is post-fixed with an . For example: x.t_(), will change x.import torchx = torch.rand(5, 3)y = torch.rand(5, 3)#第一种print(x + y)#第二种print(torch.add(x, y))#第三种result = torch.empty(5, 3)torch.add(x,..原创 2021-06-30 10:56:16 · 17277 阅读 · 0 评论 -
.detach() . + detach_() 解析
当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整; 或者只训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播1. detach()[source]返回一个新的Variable,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个Variable永远不需要计算其梯度,不具有grad。即使之后重新将它的requires_gra原创 2021-06-08 10:40:23 · 17618 阅读 · 0 评论 -
torch.mul() 和 torch.mm() 区别【矩阵a和b对应位相乘/矩阵相乘】
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)的矩阵https://blog.youkuaiyun.com/Real_Brilliant/article/details/85756477...原创 2021-05-17 19:51:32 · 16389 阅读 · 0 评论 -
transform.Normalize()、标准化、均值方差。怎么计算一组图像的均值(mean)和方差(std)?
transform.Normalize():用均值和标准差对张量图像进行归一化经常看到transform.ToTensor(),transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))那transform.Normalize()是怎么工作的呢?以上面代码为例,ToTensor()能够把灰度范围从0-255变换到0-1之间,ToTensor()将shape为(H, W, C)的nump.ndarray或img转为shape为(C, H, W)的ten原创 2021-06-16 17:21:55 · 28822 阅读 · 0 评论 -
torch.flatten()函数
“推平” tensortorch.flatten(input, start_dim=0, end_dim=-1)input: 一个 tensor,即要被“推平”的 tensor。 start_dim: “推平”的起始维度。 end_dim:“推平”的结束维度。1)flatten(x,1)是按照x的第1个维度拼接(按照列来拼接,横向拼接);2)flatten(x,0)是按照x的第0个维度拼接(按照行来拼接,纵向拼接);3)有时候会遇到flatten里面有两个维度参数,flatten(.原创 2021-05-17 19:46:15 · 18296 阅读 · 0 评论