![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深度之眼之代码调试
文章平均质量分 91
Brignt_run
喜欢模式识别、图像处理和计算机视觉
展开
-
【深度之眼】Pytorch框架班第五期-Pytorch中常见的报错信息与课程总结
报错: ValueError: num_samples should be a positive integer value, but got num_samples=0可能的原因:传入的Dataset中的len(self.data_info)==0,即传入该dataloader的dataset里没有数据解决方法:检查dataset中的路径,路径不对,读取不到数据。检查Dataset的__len__()函数为何输出为零2报错:TypeError: pic should be PIL I...转载 2020-09-11 13:37:44 · 393 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-GPU使用代码解析
CPU(central processing unit,中央处理器):主要包括控制器和运算器GPU(Graphics processing unit, 图形处理器):处理统一的,无依赖的大规模数据运算to函数: 转换数据类型/设备1、tensor.to(*args, **kwargs)2、tensor.to(*args, **kwargs)区别: 张量不执行inplace, 模型执行inplacetensor to cudaimport torchimport torch.nn as nn原创 2020-09-11 11:20:57 · 577 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Finetune代码解析
模型的微调(Finetune)Transfer Learning: 机器学习分支,研究源域(source domain)的知识如何应用到目标域(target domain)。模型微调步骤:1、获取预训练模型参数2、加载模型(load_state_dict)3、修改输出层模型微调训练方法:1、固定预训练的参数(requires_grad=False, lr=0),即不更新参数的梯度,或者学习率为0。2、Features Extractor较小学习率(params_group)。对于分类任务来说原创 2020-09-10 22:45:26 · 558 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-模型保存与加载代码解析
模型的保存import torchimport numpy as npimport torch.nn as nnclass LeNet2(nn.Module): def __init__(self, classes): super(LeNet2, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 6, 5), nn.ReLU(),原创 2020-09-10 20:56:07 · 407 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Batch Normalization代码调试
Batch NormalizationBatch Normalization: 批标准化批:一批数据,通常为mini-batch标准化:0均值,1方差优点:1、可以用更大的学习率,加速模型的收敛2、可以不用精心设计权值初始化3、可以不用dropout或者较小的dropout4、可以不用L2或者较小的weight decay5、可以不用LRN(local response normalization)计算方式代码import torchimport numpy as npim原创 2020-09-10 17:24:00 · 232 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Hook函数与CAM算法代码调试解析
Hook函数概念Hook函数机制:不改变主体,实现额外功能,像一个挂件,挂钩,hook。由于pytorch采用的计算图为动态图,动态图运算结束后,产生的中间变量(例如特征图,非叶子节点的梯度)会被释放掉,但是往往有时候我们想要提取这些中间变量,这时我们就可以采用Hook函数。import torchimport torch.nn as nnimport sys, oshello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__)+os.原创 2020-09-09 22:36:04 · 353 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Tensorboard图像、卷积核和特征图可视化代码解析
import osimport torchimport timeimport torchvision.models as modelsimport torchvision.transforms as transformsimport torchvision.utils as vutilsfrom torch.utils.tensorboard import SummaryWriterfrom torch.utils.data import DataLoaderimport syshell原创 2020-09-09 20:48:12 · 497 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Tensorboard代码解析
代码import osimport numpy as npimport matplotlib.pyplot as pltfrom torch.utils.tensorboard import SummaryWriterimport syshello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__)+os.path.sep+".."+os.path.sep+"..")sys.path.append(hello_pytorch_DI.原创 2020-09-09 17:08:16 · 243 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Tensorboard界面使用详解
import numpy as np# SummaryWriter用来创建一个writer,可以记录我们想要可视化的数据。from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter(comment='tensorboard_818')for x in range(100): # 曲线名称,y轴,x轴 writer.add_scalar('y=2x', x * 2, x) writer.add.原创 2020-09-09 15:30:57 · 408 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-优化器代码调试
优化器采用梯度更新模型中的可学习参数,使得模型输出与真实标签的差异最小,即使loss下降。管理并更新模型中可学习参数的值,使得模型输出更接近真实标签。Optimizerclass Optimizer(object): def __init__(self, params, defaults): self.defaults = defaults self.state = defaultdict(dict) self.param_groups = [] . . . param_原创 2020-09-09 12:26:35 · 247 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-模型容器之nn.ModuleDict代码调试
模型容器(Containers)nn.ModuleDictnn.ModuleDict 是nn.module的容器,用于包装一组网络层,以索引方式调用网络层。主要方法:clear(): 清空ModuleDictitems(): 返回可迭代的键值对(key-value pairs)keys(): 返回字典的键(key)values(): 返回字典的值(value)pop(): 返回一对键值,并从字典中删除class ModuleDict(nn.Module): def __ini原创 2020-09-08 22:39:10 · 924 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-模型容器之nn.ModuleList代码调试
模型容器(Containers)nn.ModuleListnn.ModuleList是nn.module的容器,用于包装一组网络层,以迭代的方式调用网络层。主要方法:append(): 在ModuleList后面添加网络层extend(): 拼接两个ModuleListinsert(): 指定在ModuleList中位置插入网络层class ModuleList(nn.Module): def __init__(self): super(ModuleList, s原创 2020-09-08 22:27:51 · 393 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-模型容器之nn.Sequential代码调试
模型容器(Containers)nn.Sequentialnn.Sequential 是 nn.module 的容器,用于按顺序包装一组网络层class LeNetSequential(nn.Module): def __init__(self, classes): super(LeNetSequential, self).__init__() self.features = nn.Sequential( nn.Conv2d(3, 6原创 2020-09-08 21:23:56 · 578 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-通过调试了解nn.Module模块
nn.Module调试1、以LeNet为例,我们在第72行设置断点,并进行Debug。2、点击C按钮,我们进入到LeNet,可以发现LeNet是继承于nn.Module的,所以LeNet是一个module,代码super(LeNet, self).init()实现父类函数调用的功能,父类为nn.Mudule,所以它会调用nn.Module的__init__()函数。3、点击C按钮进入该行代码,观察__init__()的函数操作,我们可以发现__init__()实现了8个有序字典的初始化。s原创 2020-09-04 19:37:54 · 262 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-模型创建机制
调试1、以LeNet为例,我们在第72行设置断点,并进行Debug。2、点击C按钮进入到模型中,我们可以发现__init__()函数构建了LeNet模型需要的子模块。3、我们一直点击B按钮,当最后一个模块构建完成后,程序跳出,LeNet模型的初始化就完成了。模型构建完成。4、我们将代码运行到模型训练部分的97行,此处我们对模型输入了inputs,输出outputs。5、点击C按钮进入该行代码,此时我们进入module.py文件中的Module类的__call__()函数中,因为LeNe.原创 2020-09-04 17:00:49 · 272 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-transforms.Normalize运行机制调试
transforms.Normalizetransforms.Normalize(mean, std, inplace=False)功能:逐channel的对图像进行标准化output = (input - mean)/ stdmean: 各通道的均值std: 各通道的标准差inplace: 是否原地操作调试1、在my_dataset.py文件中RMBDataset类中的__getitem__(self, index)函数中的transforms语句上设置断点,并在主程序中进行deb原创 2020-09-04 11:47:45 · 456 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-transforms运行机制的代码调试
torchvision.transforms常用的图像预处理方法# ============================ step 1/5 数据 ============================split_dir = os.path.join(BASE_DIR, "..", "..", "data", "rmb_split")if not os.path.exists(split_dir): raise Exception(r"数据 {} 不存在, 回到lesson-06\1_s原创 2020-09-04 11:10:56 · 195 阅读 · 0 评论 -
【深度之眼】Pytorch框架班第五期-Pytorch数据读取的代码调试
torch.utils.data.DataLoaderData(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_list=False, timeout=0, worker_init_fn=None, multiprocessing_context=None).原创 2020-09-04 09:53:17 · 559 阅读 · 2 评论