
Pytorch
Xhfei1224
研究方向:数据挖掘/机器学习/深度学习(博士在读)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Pytorch错误】RNN-GRU代码编写,出现didn‘t match because some of the arguments have invalid types: (float, int)
RNN-GRU代码编写出现didn't match because some of the arguments have invalid types: (float, int)原创 2022-11-21 09:11:54 · 1588 阅读 · 0 评论 -
【pytorch】model.train()解释
model.train():在使用pytorch构建神经网络的时候,训练过程中会在程序上方添加一句model.train(),作用是启用batch normalization和drop out。model.eval():测试过程中会使用model.eval(),这时神经网络会沿用batch normalization的值,并不使用drop out。...原创 2021-09-25 09:36:02 · 1816 阅读 · 0 评论 -
【Pytorch】单机多卡数据并行DataParallel
单卡多级的模型训练,即并行训练,可分为数据并行和模型并行两种.数据并行是指,多张 GPUs 使用相同的模型副本,但采用不同 batch 的数据进行训练.模型并行是指,多张 GPUs 使用同一 batch 的数据,分别训练模型的不同部分.如图:1. DataParallel 简述pytorch 默认只用一个 GPU,但采用 DataParallel很便于使用多 GPUs 的.import osos.environ["CUDA_VISIBLE_DEVICES"] = "1,2"# 注: 多卡原创 2021-05-07 09:30:59 · 6654 阅读 · 3 评论 -
【PyTorch】PyTorch中的model.zero_grad()和optimizer.zero_grad()使用
在训练Pytorch的时候,我们会使用model.zero_grad()optimizer.zero_grad()首先,这两种方式都是把模型中参数的梯度设为0当optimizer = optim.Optimizer(net.parameters())时,二者等效,其中Optimizer可以是Adam、SGD等优化器def zero_grad(self): """Sets gradients of all model parameters to zero.""" f原创 2020-12-20 10:47:31 · 5211 阅读 · 1 评论 -
【Pytorch】Pytorch的net.train 和 net.eval的使用区别
在训练Pytorch的时候,我们会在训练模型时会在前面加上:model.train()在测试模型时在前面使用:model.eval()同时发现,如果不写这两个程序也可以运行,这是因为这两个方法是针对在网络训练和测试时采用不同方式的情况,比如Batch Normalization 和 Dropout。训练时是正对每个min-batch的,但是在测试中往往是针对单张图片,即不存在min-batch的概念。由于网络训练完毕后参数都是固定的,因此每个批次的均值和方差都是不变的,因此直接结算所有ba原创 2020-12-20 10:37:42 · 984 阅读 · 1 评论 -
【pytorch】model.train和model.eval用法及区别详解
使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval,eval()时,框架会自动把BN和DropOut固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大!Class Inpaint_Network() ......Model = Inpaint_Nerwoek()#train:Model.train(mode=True).....#test:Model.eval()1.m原创 2020-06-05 20:57:19 · 2110 阅读 · 0 评论 -
【PyTorch】state_dict详解
在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict作为python的字典对象将每一层的参数映射成tensor张量,需要注意的是torch.nn.Module模块中的state_dict只包含卷积层和全连接层的参数,当网络中存在batchnorm时,例如vgg网络结构,torch.nn.Module模块中的state_dict也会存放batchnorm’s running_mean,关于batchnorm详解可见ht原创 2020-05-31 19:23:23 · 2292 阅读 · 0 评论 -
【pytorch】pytorch中model.eval的作用
训练完train_datasets之后,model要来测试样本了。在model(test_datasets)之前,需要加上model.eval()。否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有batch normalization层所带来的的性质。在做one classification的时候,训练集和测试集的样本分布是不一样的,尤其需要注意这一点。...转载 2020-05-30 17:04:09 · 1145 阅读 · 0 评论 -
【pytorch】linux查看pytorch版本
1.进入python环境python2.7,输入pythonpython3.6,输入python32.import torch3.print(torch.version)退出python环境exit()原创 2020-05-29 22:13:09 · 13252 阅读 · 1 评论 -
【pytorch】pytorch-torch.manual_seed(1)的作用
在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,在pytorch中,通过设置随机数种子也可以达到这么目的。import torchtorch.manual_seed(2)print(torch.rand(2))有这段代码可以知道,每次得到的数是随机的,如果不加上运行这段代码会发现,每次得到的随机数是固定的。但是如果不加上torch.manual_seed,打印出来的数就不同。所以只需要调用torch.manu转载 2020-05-27 20:17:42 · 755 阅读 · 0 评论 -
【pytorch】torch.backends.cudnn.deterministic
为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样?固定随机数种子是非常重要的。但是如果你使用的是PyTorch等框架,还要看一下框架的种子是否固定了。还有,如果你用了cuda,别忘了cuda的随机数种子。这里还需要用到torch.backends.cudnn.deterministic.torch.backends.cudnn.deterministic是啥?顾名思义,将这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。如果配合原创 2020-05-21 22:18:12 · 17871 阅读 · 11 评论 -
【pytorch】cudnn.benchmark和cudnn.deterministic
cudnn.benchmark和cudnn.deterministic问题在很多情况下我们都能看到代码里有这样一行:torch.backends.cudnn.benchmark = true而且大家都说这样可以增加程序的运行效率。那到底有没有这样的效果,或者什么情况下应该这样做呢?解决办法总的来说,大部分情况下,设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题。一般来讲,应该遵循以下准则:如果网络的输入数据转载 2020-05-21 22:03:48 · 1324 阅读 · 0 评论 -
【pytorch测试】model.eval的作用
训练完train_datasets之后,model要来测试样本了。在model(test_datasets)之前,需要加上model.eval().。否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有batch normalization层所带来的的性质。在做one classification的时候,训练集和测试集的样本分布是不一样的,尤其需要注意这一点。...原创 2020-04-25 22:59:31 · 1303 阅读 · 1 评论 -
【Pytorch 和 Caffe区别】Pytorch 和 Caffe 使用对比
初学者比较关心的问题就是好不好上手,以及是否容易扩展。我把这两个平台作为论文实现的工具,代码能力有限,所以在一个初学者角度说一下在自己的感想。安装难易度:caffe>pytorchcaffe部署我是遇到不少麻烦的,特别是实验室很多人共用一个路径,环境比较乱,编译caffe基本上不可能不遇到问题,大部分问题baidu一下都可以解决。caffe最近又有了caffe2,要求是CUDA8.0 c...原创 2020-04-25 21:43:22 · 4860 阅读 · 0 评论 -
【Pytorch多GPU训练错误】AttributeError: ‘DataParallel’ object has no attribute ‘xxxx’
在 pytorch 多GPU训练下,存储 整个模型 ( 而不是model.state_dict() )后再调用模型可能会遇到下面的情况:AttributeError: ‘DataParallel’ object has no attribute ‘xxxx’解决的方法是:model = torch.load('path/to/model')#添加语句部分if isinstance(mo...原创 2020-03-26 20:22:46 · 14074 阅读 · 1 评论 -
【pytorch预训练模型】pytorch预训练模型的下载地址
https://github.com/pytorch/vision/tree/master/torchvision/models几乎所有的常用预训练模型都在这里面总结下各种模型的下载地址:Resnet:model_urls = { 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth', ...原创 2020-03-26 16:58:34 · 2013 阅读 · 0 评论 -
【Pytorch编译错误】TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor
TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor原先代码:cate_i = labels[j].numpy()原来Pytorch代码运行在cpu中,所以这么写实对的。后来改用GPU中代码运行,因为numpy在cuda中没有这种表达,需要将cuda中的数据转换到cpu中,...原创 2020-03-24 16:53:38 · 6172 阅读 · 0 评论 -
【Pytorch可视化】windows系统下打开Pytorch可视化tensorboard
tensorboard --logdir=路径路径中不能包含英文要使用绝对路径,由于windows的磁盘是多个磁盘,不像linux,比如你的图文件存在E盘下的logs文件夹下面,那么路径就需要这么写,(在windows下使用win+R,敲入cmd调出终端界面输入以下指令):tensorboard --logdir=E:\logs其中E:\logs是日志文件events.out.tfeven...原创 2020-03-18 23:17:20 · 1403 阅读 · 0 评论 -
【Python】python路径拼接os.path.join()函数(windows平台上为例)
python路径拼接os.path.join()函数(windows平台上为例)转载 2020-01-12 10:04:54 · 2408 阅读 · 0 评论 -
【PyTorch框架学习】-创建tensor
导入库import torchimport numpy as np1. 先定义数组,再转换为torch向量a=np.array([2,3.3])a=torch.from_numpy(a)print(a)#Out:tensor([2.0000, 3.3000], dtype=torch.float64)b=np.ones([2,3])#2行3列值1数组b=torch.from_...原创 2019-06-04 16:37:22 · 815 阅读 · 0 评论 -
【Pytorch小知识】torch.Storage学习
tensor分为头信息区(Tensor)和存储区(Storage)。信息区主要保存着tensor的形状(size)、步长(stride)、数据类型(type)等信息,而真正的数据则保存成连续数组,存储在存储区。因为数据动辄成千上万,因此信息区元素占用内存较少,主要内存占用取决于tensor中元素的数目,即存储区的大小。一般来说,一个tensor有着与之相对应的storage,storage...原创 2019-06-16 10:49:31 · 1528 阅读 · 0 评论 -
【Pytorch小知识】Pytorch使用To方法编写代码在不同设备(CUDA/CPU)上兼容(device-agnostic)
以前版本的PyTorch编写device-agnostic代码非常困难(即,在不修改代码的情况下在CUDA可以使用或者只能使用CPU的设备上运行)。device-agnostic的概念即设备无关,可以理解为无论什么设备都可以运行您编写的代码。(PS:个人理解,我没有在网上找到专业解释)PyTorch 0.4.0使代码兼容PyTorch 0.4.0通过两种方法使代码兼容变得非常容易:张...原创 2019-06-13 22:01:12 · 7273 阅读 · 0 评论 -
【Pytorch小知识】pytorch使用torch.dtype、torch.device和torch.layout管理数据类型属性
pytorch从0.4开始提出了Tensor Attributes,主要包含了torch.dtype,torch.device,torch.layout。pytorch可以使用他们管理数据类型属性。以下内容为pytorch0.4文档内容,具体可以查看Tensor Attributes。Tensor Attributestorch.dtypetorch.devicetorch.layout...原创 2019-06-13 20:29:38 · 10252 阅读 · 1 评论