![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch系列
文章平均质量分 58
是大糊涂不聪明
写博客的目的是为了方便自己,经常找不到需要的程序,记本子上又容易丢...
如果有错误的地方啊,麻烦指出来哈
展开
-
高版本pytorch运行低版本pytorch常见问题汇总记录
记录一下pytorch日常碰到的调试的bug原创 2022-09-13 16:52:12 · 2901 阅读 · 0 评论 -
多分类交叉熵函数计算过程(包含numpy和pytorch代码实现)
交叉熵损失函数的计算过程原创 2022-08-26 16:35:42 · 2740 阅读 · 0 评论 -
Pytorch中自定义一个dataset的&损失函数实现&保存图片的方式
定义一个Dataset类用于分类网络的训练,包含了dataloader相关的方法;以及常见的定义损失函数的方式原创 2022-08-19 17:04:57 · 1525 阅读 · 0 评论 -
利用RepVGG训练一个cifar-10数据
快速使用repvgg训练分类网络原创 2022-08-13 17:16:50 · 1467 阅读 · 7 评论 -
win10+anaconda安装pycocotool
1.先从git上下载,压缩包解压到D:\Anaconda\Tools\cocoapi-master2. 进入cocoapi-master/PythonAPI文件夹,在此处打开Powershell窗口(shift+鼠标右键,就能看到了),运行命令:python setup.py build_ext --inplace3. 安装完成后,继续在Powershell窗口运行命令:python setup.py build_ext install...原创 2021-03-03 12:00:55 · 231 阅读 · 0 评论 -
MobileNet-V2理解以及pytorch源码实现
1.原理和创新点整个网络中,主要有以下两种sequence。当s=1 , 同时 k=k撇, 也就是输入channel = 输出channel 时候,需要加一个shortcut中间的3x3conv,采用的是群组卷积的特例, DepthWise Conv,此时 gropus = hidden_channel论文中提出,当维度较低时,应该采用线性激活函数,高维时,采用ReLU6激活函数。丢失信息较少针对网络的参数表格,主要有以下几点:当一个sequence重复多次时( 即n>原创 2021-03-02 19:53:01 · 1764 阅读 · 2 评论 -
dataloaders中使用items()以及tqdm,加载预训练参数
1.查看dataloader类型train_dataset.class_to_idx 从字面上来看,就是类别对应的索引os.path.abspath(os.path.join(os.getcwd(), "../"))从当前的目录,跳到上一层目录(绝对路径)data_root = os.path.abspath(os.path.join(os.getcwd(), "../")) # get data root pathimage_path = os.path.join(data_root, "原创 2021-03-02 16:33:19 · 1878 阅读 · 0 评论 -
在图片分类和目标检测中创建train/val/test
1.在一个文件夹划分train、val本来只有一个flower_photos文件夹经过处理后,出现了train、val文件夹并且train和val文件夹如下对目录下的文件名随机采样,生成列表 eval_index = random.sample(images, k=int(num*split_rate))得到路径名后,copyeval_index = random.sample(images, k=int(num*split_rate))for index, image in enum原创 2021-03-02 11:33:53 · 1494 阅读 · 2 评论 -
Dataloader读取文件夹图片,创建字典,train和val
1.创建transform的字典1.输入为PIL的图像(array也行),转换为Tensor (0—255的[H,W,C] —> 0~1 的 [C,H,W])2. compose将多个变换组合起来3.data_transforms = { 'train': transforms.Compose([ transforms.RandomResizedCrop(input_size), transforms.RandomHorizontalFlip(),原创 2021-03-02 11:14:27 · 1413 阅读 · 0 评论 -
读取xml文件中的信息到txt文本中
1.代码import xml.etree.ElementTree as ETimport os"""r''要加上的"""source = r'D:\pycharm\pytorch相关\labelImg-master\ori_xlm' # 文件夹路径dir = os.listdir(source)dir为一个列表查看dir中的第二个元素(index=1)作为一个N叉树可以查看其叶子节点里面出现了多个’obejct’节点因为源xml文件框了好几个不同的对象查看xml文件里面的原创 2021-02-23 11:44:53 · 747 阅读 · 1 评论 -
批量修改图片文件名
1.import osi=1for filename in os.listdir('logo/'): newname = str(i) + ".jpg" os.rename('logo/'+filename, 'logo/2020_'+newname) i += 12.最后一个反斜杠很重要一般自己都不会写’/’而且只能是这个,尴尬》。。。’\’ 这个会报错path = 'D:\pycharm\pytorch相关\labelImg-master\ori_image\原创 2021-02-22 11:07:03 · 193 阅读 · 0 评论 -
LabelImage安装以及打包exe教程,win10+anaconda3,
labelImg安装简介原创 2021-02-21 14:46:04 · 1643 阅读 · 0 评论 -
np.argmax和torch.max
1.arg就是argument,自变量的意思argmax(f) 返回函数f的值取最大值时自变量的值np.argmax(a)取回对应的索引index(从下标0开始)2.多个维度1.np.argmax()a = np.array([[1, 5, 5, 2], [9, 6, 2, 8], [3, 7, 9, 1]])np.argmax(a,axis=0)结果:array([1, 2, 2, 1], dtype=int64)很明原创 2021-02-20 10:49:17 · 763 阅读 · 0 评论 -
torch.clamp()
1.用法示例torch.clamp(input, min, max, out=None) → Tensor将输入input张量每个元素的“夹紧”到区间 [min,max],并返回结果到一个新张量。当然,需要注意的在于,input张量的dtype和[min,max]的数据类型保持一致??数学表示如下: | min, if x_i < miny_i = | x_i, if min <= x_i <= max | max, if x_i > max原创 2021-02-18 14:02:26 · 827 阅读 · 0 评论 -
【python】*号用法 如nn.Sequential(*layers)
1.形参——单个星号代表这个位置接收任意多个非关键字参数,转化成元组方式。实参——如果*号加在了是实参上,代表的是将输入迭代器拆成一个个元素。2.例子nn.Sequential(*layers) def _make_layer(self, block, planes, cnt, stride=1): norm_layer = self._norm_layer if stride!= 1 or self.inplanes != planes*block.expa原创 2021-02-07 15:15:31 · 1899 阅读 · 0 评论 -
pytorch代码验证空洞卷积
1.空洞卷积注要内容如下:空洞卷积理解但是呢,对于这篇博客的部分内容我不赞同。3x3的kernel设置dialted-rate=2时,理应变为"5x5"的kernel,多出来的空洞用0填充,这也是变相的增加了感受野。也就是说,设置dialted-rate>1时,会使得卷积的kernel变大。2.代码验证import numpy as npimport torchimport torch.nn as nnarr = np.array(range(1,26))arr = arr.re原创 2021-02-05 15:42:23 · 3181 阅读 · 2 评论 -
使用torch.nn中的Container简化模型代码
1.多种容器此处重点关注nn.Sequential()和nn.ModuleList()官方文档torch.nn中的container2.nn.Sequential()A sequential container. Modules will be added to it in the order they are passed in the constructor. Alternatively, an ordered dict of modules can also be passed in.To原创 2021-02-03 22:12:54 · 226 阅读 · 0 评论 -
pytorch1.7.1安装tensorboard
0.打开终端conda install tensorboard尽管存在torch.utils.tensorboard ,但是pytorch内部并没有安装包,需要自己安装1.代码示例代码里和tensorboard相关的都写的了注释SummaryWriter()自动创建一个runs的文件夹里面存了一个event的文件import torchfrom torch.utils.tensorboard import SummaryWriter# Writer will output to'原创 2021-01-30 17:01:00 · 1624 阅读 · 0 评论 -
pytorch中 在不同的device中save and load模型
0.device的定义就是模型和参数在CPU和GPU上的一个切换,有些地方要注意的无非就是'cpu'和'cuda'1.save:gpu, load:cpu使用map_location参数# Specify a path to save toPATH = "model.pt"# Savetorch.save(net.state_dict(), PATH)# Loaddevice = torch.device('cpu')model = Net()model.load_state_原创 2021-01-29 13:40:12 · 394 阅读 · 0 评论 -
pytorch中DataLoader浅析
1.这里不解释源码(因为我也看不懂)2. 简单解释dataloader本质是一个可迭代(iterable)对象,使用iter()访问,不能使用next()访问;( iter和next:迭代器和生成器)下面的代码为DataLoader的源码: def __iter__(self) -> '_BaseDataLoaderIter': # When using a single worker the returned iterator should be #原创 2021-01-27 21:22:10 · 820 阅读 · 0 评论 -
copy.copy()和copy.deepcopy() / python中的浅深拷贝
1.python深浅拷贝和C++中含义不同浅拷贝:copy.copy()新的变量和原变量为同一个,改变其中一个值,另一个也会变深拷贝:copy.deepcopy()独立的变量,互不干扰原创 2021-01-27 20:45:05 · 824 阅读 · 0 评论 -
迭代器iter()和生成器yield
0.共同点:都只能单向,从第一个元素进行访问,一直往后1.迭代器可以通过列表、元组等创建迭代器iter() 创建next()或者for循环 访问创建a = [1,2,3,4,5]it = iter(a)访问#方法一:while True: try: # 获得下一个值: x = next(it) print(x) except StopIteration: # 遇到StopIteration就退出原创 2021-01-27 16:23:42 · 220 阅读 · 0 评论 -
手动安装pytorch1.7.1(Win10+Anaconda,python3.8.5)
1.在Anaconda prompt自动安装教程链接:我的pytorch安装教程但是昨天的网不行,使用命令行终端总是失败。折腾了半天,晚上发现了手动安装的步骤(一定要按照步骤来)2.手动安装pytorch1.7.1+torchvision0.8.2先从网站上下载安装包清华镜像源我的是笔记本,没有GPU,因而选择CPU版本打开Anaconda prompt终端,创建一个名为pytorch的虚拟环境这个命名随意的,选择能让你开心的命名最重要conda create -n pyto原创 2021-01-26 09:14:30 · 2065 阅读 · 7 评论 -
Win10+anaconda+pytorch并导入pycharm
1.Anaconda中配置虚拟环境点击Prompt2.输入conda create --name pytorch python=3.83.激活虚拟环境activate pytorch4.pytorch官网获取安装conda命令5.将命令复制到prompt终端安装就可以了6.导入pycharm在envs下面就多出了一个pytorch虚拟环境选择下面的python.exe就可以...原创 2021-01-16 15:39:57 · 823 阅读 · 0 评论 -
1X1卷积的作用,以及pytorch代码实现简单程序
解释.从从某种程度来讲用1×1卷积并不是是网络变得更深,而是更宽,这里的宽实际上是增加数据量但是通过1×1的卷积我们就可以对原始图片做一个变换,得到一张新的图片,从而可以提高泛化的能力减小过拟合,同时在这个过程中根据所选用的1×1卷积和filter的数目不同,可以实现跨通道的交互和信息的整合,而且还可以改变图片的维度.而且因为通过对维度的操作,虽然网络的层数增加了,但是网络的参数却可以大大减小,节省计算量。在实际应用的过程中,通常在卷积之后就跟着一个Relu之类的非线性层,把卷积的线性变成非线性,通过这原创 2020-11-13 15:10:28 · 6266 阅读 · 0 评论 -
pytorch加载自己的数据集
1.数据集格式X_train,X_test都是二进制文件pickle形式shape为 (10240,64,8)类型8分类问题2.模仿Mnist加载方式batch_size = 64transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])""" 一定要有dataset和DataLoader才原创 2020-10-29 09:55:53 · 278 阅读 · 0 评论 -
如何手动计算图像数据集的均值和方差
1.代码import osfrom PIL import Image import matplotlib.pyplot as pltimport numpy as npfrom scipy.misc import imread filepath = '/home/JPEGImages' # 数据集目录文件夹# pathdir是得到该文件夹下的所有文件名pathDir = os.listdir(filepath) """先计算均值,R、G、B三通道先置为0"""R_channe原创 2020-10-28 10:19:45 · 864 阅读 · 0 评论 -
pytorch加载创建的数据集-2(label为图片)
mnist + label为图片,语义分割转载 2020-10-28 09:12:58 · 409 阅读 · 0 评论 -
pytorch创建自己的数据集-1(label为数字的情况)
mnist文件夹+数字label转载 2020-10-28 09:10:41 · 863 阅读 · 0 评论 -
pytorch中的transforms函数处理图像
transform转载 2020-10-28 08:56:25 · 327 阅读 · 0 评论