
Pytorch
xddwz
这个作者很懒,什么都没留下…
展开
-
Pytorch 模型load各种问题解决
出现unexpected key module.xxx.weight问题有时候你的模型保存时含有nn.DataParallel时,就会发现所有的dict都会有module的前缀。这时候加载含有module前缀的模型时,可能会出错。其实你只要移除这些前缀即可 pretrained_net = Net_OLD() pretrained_net_dict = torch.load(save_path) new_state_dict = OrderedDict() for k, v i..原创 2021-04-27 17:42:49 · 1074 阅读 · 0 评论 -
CNN计算网络各层参数量与FLOPs
CNN中经常需要考虑到网络的参数量与计算量等问题,具体的计算方法为:其中,K是卷积核的大小,Cin核Cout表示输入与输出的通道数,H与W表示特征图的大小。此外,可以通过python中的stat模块计算与验证,代码:import torchimport torch.nn as nnfrom torchstat import statclass Net(nn.Module): def __init__(self): super(Net, self).__ini原创 2021-03-10 10:47:35 · 725 阅读 · 1 评论 -
pytorch入门到放弃4:nn.Module
在pytorch中定义神经网络时,所有的层和损失函数都来自 torch.nn,模型的构建继承的nn.Module,网络的构建一般采用下面的模板(以单个卷积层为例):import torch.nn as nnclass MyNet(nn.Module): def __init__(self, in_channel, out_channel, kernel_size, stride): super(MyNet, self).__init__() self.co原创 2020-10-24 16:50:26 · 160 阅读 · 1 评论 -
pytorch入门到放弃3:Dataset
pytorch为数据的读取和预处理提供了很多工具。其中,torch.utils.data.Dataset是代表这一数据的抽象类,我们可以定义自己的数据class来继承和重写这个抽象类,只需要定义__len__和__getitem__两个函数就行,其中__getitem__包含了数据的读取和处理:from torch.utils.data import Dataset, DataLoaderimport pandas as pdclass MyDataset(Dataset): de原创 2020-10-23 16:42:28 · 259 阅读 · 2 评论 -
pytorch入门到放弃2:Variable
Variable,就是变量的意思,是神经网络计算图里特有的一个概念(在numpy里没有变量的概念),Variable提供了自动求导的功能。Variable和Tensor本质上没有区别,不过Variable会被放到一个计算图中,然后进行前向传播、反向传播、自动求导。Variable是在torch.autograd.Variable中,要将一个tensor 的数据arr转化为Variable很简单,只需要通过Variable(arr)即可。如图,Variable有三个比较重要的组成属性:dat.原创 2020-10-23 14:35:40 · 201 阅读 · 1 评论 -
pytorch入门到放弃1:Tensor
目录一、Tensor(张量)二、Tensor的数据类型一、Tensor(张量)pytorch里面处理的最基本的操作对象就是Tensor(张量),Tensor表示的是一个多维的矩阵,比如零维就是一个点,一维就是向量,两维就是一般的矩阵,多维就相当于一个多维的数据,这个numpy是对应的,并且pytorch的Tensor可以和numpy的ndarray相互转换,区别是pytorch的Tensor可以在GPU上运行,而numpy的bdarray只能在CPU上运行。二、Tensor的数据类.原创 2020-10-15 15:02:04 · 163 阅读 · 0 评论 -
pytorch:读取图像的两种方法
在pytorch实现神经网络的时候需要数据的读取,我们经常采用torch.utils.data.dataset.Dataset,但是在具体的数据读取的时候可以使用opencv或者PIL两种方法,他们在具体的数据处理上也是不一样的。1、使用opencv:# -*- coding: utf-8 -*-import numpy as npimport torchfrom torch.utils.data.dataset import Datasetfrom torch.utils.data.da原创 2020-09-04 15:57:11 · 6307 阅读 · 3 评论 -
pytorch:搭建神经网络的常见方法
使用pytorch搭建神经网络的方法有很多,常见的有四种方法。第一种:这种方法比较早,现在用的很少了,尤其是在复杂的网络中,是直接一层一层的堆起来的,不够模块化,而且不方便扩展,但是对初学者容易理解。 class Net1(torch.nn.Module): def __init__(self): super(Net1, self).__init__() self.conv1 = torch.nn.Conv2d(3, 32, 3, 1, 1)原创 2020-09-03 10:53:36 · 462 阅读 · 0 评论 -
pytorch实现VGG网络
pytorch实现vgg网络:class vgg(nn.Module): def __init__(self, n_class=1000): super(vgg, self).__init__() self.n_class = n_class self.features = nn.Sequential( # conv1 nn.Conv2d(in_channels=3, out_channels=6原创 2020-08-14 15:25:50 · 498 阅读 · 0 评论 -
pytorch搭建网络的几种方法
pytorch搭建网络的几种方法:https://blog.youkuaiyun.com/qq_37385726/article/details/81740233感谢作者转载 2020-08-14 15:22:15 · 342 阅读 · 0 评论 -
将自己的数据转为VOC数据格式
将自己的数据转为VOC数据格式用来目标检测from lxml.etree import Element, SubElement, tostringfrom xml.dom.minidom import parseStringfrom xml.dom.minidom import Documentdef make_xml(infos): for image_id, image_info in infos.items(): image_name = image_info['原创 2020-06-24 17:26:41 · 977 阅读 · 0 评论 -
pytorch中网络参数初始化
可以先定义两个函数:import torch.nn.init as initdef xavier(param): init.xavier_uniform(param) # init.kaiming_uniform_() # 可以选择其他的def weights_init(m): if isinstance(m, nn.Conv2d): xavier(m.weight.data) m.bias.data.zero_()初始化的时原创 2020-06-17 11:39:10 · 729 阅读 · 0 评论 -
pytorch系列4:池化层
1、AdaptiveAvgPool1d(N)对一个C*H*W的三维输入Tensor, 池化输出为C*H*N, 即按照H轴逐行对W轴平均池化>>> a = torch.ones(2,3,4)>>> a[0,1,2] = 0>>>> atensor([[[1., 1., 1., 1.], [1., 1., 0...转载 2019-06-01 17:14:53 · 1081 阅读 · 0 评论 -
pytorch系列3:在预训练好的模型上进行微调
在训练网络时经常要进行微调,原来用caffe比较多,相对来说caffe的微调要简单,那么pytorch是怎么实现网络的微调呢,我的方法是:# 导入原来的网络import modules_original# 导入新的网络import modulespre_net = modules_original() # pre_net.load_state_dict(torch.lo...原创 2019-06-01 15:18:39 · 2746 阅读 · 0 评论 -
Pytorch系列2:实现不同层设置不同的学习率
1、选择要调整的学习率对应的层,这里以conv5为例“net = net()lr = 0.001conv5_params = list(map(id, net.conv5.parameters()))base_params = filter(lambda p: id(p) not in conv5_params, net.parameters...原创 2019-05-17 17:24:08 · 2094 阅读 · 0 评论 -
Pytorch系列1: torch.nn.Sequential()讲解
torch.nn.Sequential是一个Sequential容器,模块将按照构造函数中传递的顺序添加到模块中。通俗的话说,就是根据自己的需求,把不同的函数组合成一个(小的)模块使用或者把组合的模块添加到自己的网络中。主要有两种使用方法:# 第一种方法conv_module = nn.Sequential( nn.Conv2d(1,20,5), n...原创 2019-05-30 20:35:42 · 20717 阅读 · 2 评论