- 博客(57)
- 资源 (29)
- 收藏
- 关注
原创 二次型矩阵
二次型的每一项都是二次的,如果是平方则是平方项,如果是两个不同的变量则为交叉项。二次型如:x2+xy+y2x^2+xy+y^2x2+xy+y2。二次型->矩阵表达式例:x12+2x1x2+x22−x2x3+2x32−2x1x3x_1^2+2x_1x_2+x_2^2-x_2x_3+2x_3^2-2x_1x_3x12+2x1x2+x22−x2x3+2x32−2x1x3解:平方项的系数直接做成主对角线的元素交叉项的系数除以2放到两个对称的相应位置上图可表示为 XTAXX^
2021-10-11 20:59:42 18960 3
原创 实对称矩阵的对角化
矩阵与对角形相似(P−1AP=ΛP^{-1}AP=\LambdaP−1AP=Λ)的条件定理1AAA 相似于对角形 Λ\LambdaΛ 的充要条件是 AAA 有 nnn 个线性无关的特征向量。推论如果 AAA 有 nnn 个互异的特征值,则 AAA 一定相似于对角形 Λ\LambdaΛ。其中 Λ\LambdaΛ 对角线为 AAA 的特征值。定理2A∼ΛA \sim \LambdaA∼Λ 的充分必要条件是对每一个 KKK 重的特征根的基础解系有 KKK 个解。所有的实对称矩阵都能对角化!!!向量
2021-10-11 16:39:35 4334
原创 向量和正交
向量的内积α\alphaα 和 β\betaβ 的内积 (α,β)(\alpha, \beta)(α,β) 为对应元素相乘再相加。内积是一个数。向量的长度(范数、模)∣∣α∣∣=(α,α)||\alpha||=\sqrt{(\alpha,\alpha)} ∣∣α∣∣=(α,α)性质∣∣α∣∣≥0||\alpha||\ge0∣∣α∣∣≥0∣∣kα∣∣=∣k∣⋅∣∣α∣∣||k\alpha||=|k|\cdot||\alpha||∣∣kα∣∣=∣k∣⋅∣∣α∣∣∣(α,β)∣≤∣∣α∣∣⋅∣∣
2021-10-11 14:50:01 3111
原创 相似矩阵的性质
相似AAA,BBB 是两个 nnn 阶方阵,如果可存在 nnn 阶可逆矩阵 PPP,使得P−1AP=BP^{-1}AP=BP−1AP=B则 AAA 和 BBB 相似,即 A∼BA \sim BA∼B。注:矩阵之间有三大关系:矩阵等价(AAA 经过初等变换可以得到 BBB);矩阵相似;矩阵合同。相似的性质反身性 A∼AA \sim AA∼A,P=EP=EP=E。对称性 A∼B=>B∼AA \sim B =>B \sim AA∼B=>B∼A。若A∼B,B∼C=>A∼CA
2021-10-10 21:33:56 17596
原创 特征值和特征向量
特征值和特征向量定义假设 AAA 为 nnn 阶方阵(只有方阵才可以求特征值和特征向量),若存在一个数 λ\lambdaλ,若存在非零列向量 α\alphaα,使得 Aα=λαA\alpha=\lambda\alphaAα=λα则 λ\lambdaλ 为一个特征值,α\alphaα 为对应 λ\lambdaλ 的特征向量。其中 λ\lambdaλ 可以为 0,特征向量不能为 0。注1:用矩阵乘以向量相当于对向量进行线性替换,该向量通过矩阵从原来的空间替换成另一个空间的向量,且等于原始向量的 λ\lam
2021-10-09 19:02:56 2535
原创 【深度之眼】Pytorch框架班第五期-Week9【任务1】第一节:对抗生成网络一瞥
Generative Adversarial NetsGAN: 生成对抗网络 —— 一种可以生成特定分布数据的模型GAN的训练训练目的1、对于D:对真样本输出高概率2、对于G:输出使D会给出高概率的数据监督学习训练模式step1: 训练D输入:真实数据加G生成的假数据输出:二分类概率step2: 训练G输入:随机噪声z输出:分类概率——D(G(z))DCGANGenerator:Discriminator...
2020-09-14 15:42:58 158
转载 【深度之眼】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 417
原创 【深度之眼】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 600
原创 【深度之眼】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 604
原创 【深度之眼】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 461
原创 【深度之眼】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 237
原创 【深度之眼】Pytorch框架班第五期-学习率调整策略代码调试
学习率调整策略梯度下降: Wi+1 = Wi - LR * g(Wi)学习率(learning rate)控制更新的步伐。Class _LRSchedulerclass _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): def get_lr(self): raise NotImplementedError主要属性:optimizer: 关联的优化器last_epoch: 记录epoch数,学习率的调
2020-09-10 15:35:53 356
原创 【深度之眼】Pytorch框架班第五期-Week8【任务2】第一节:目标检测一瞥
Object Detection目标检测:判断图像中目标的位置目标检测两要素1、分类:分类向量[p0, …, pn]2、回归:回归边界框[x1, y1, x2, y2]模型如何完成目标检测将3D张量映射到两个张量1、分类张量:shape为[N, c+1]2、边界框张量:shape为[N, 4]边界框数量N如何确定?重要概念:特征图一个像素对应原图一块区域目标检测模型简介按流程分为: one-stage和two-stageFaster RCNN——经典two-stage
2020-09-10 09:34:37 202
原创 【深度之眼】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 360
原创 【深度之眼】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 520
原创 【深度之眼】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 270
原创 【深度之眼】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 422
原创 【深度之眼】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 272
原创 【深度之眼】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 932
原创 【深度之眼】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 413
原创 【深度之眼】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 593
原创 【深度之眼】Pytorch框架班第五期-图像分割一瞥
图像分割将图像每一个像素分类图像分割分类1、超像素分割:少量超像素代替大量像素,常用于图像预处理2、语义分割:逐像素分类,无法区分个体3、对个体目标进行分割,像素级目标检测4、语义分割结合实例分割模型如何完成图像分割?答:图像分割由模型与人类配合完成模型:将数据映射到特征人类:定义特征的物理意义,解决实际问题Pytorch-Hub–Pytorch模型库,有大量模型供开发者调用...
2020-09-08 20:02:40 324
原创 【深度之眼】Pytorch框架班第五期-图像分类一瞥
模型是如何进行图像分类的?图像分类的Inference(推理)步骤:1、获取数据与标签2、选择模型,损失函数,优化器3、写训练代码4、写Inference代码Inference代码基本步骤:1、获取数据与模型2、数据变换,如RGB -> 4D-Tensor3、前向传播4、输出保存预测结果Inference阶段注意事项:1、确保model处于eval状态而非training2、设置torch.no_grad(),减少内存消耗3、数据预处理需保持一致,RGB or rB
2020-09-08 15:57:30 249
原创 【深度之眼】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 268
原创 【深度之眼】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 280
原创 【深度之眼】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 486
原创 【深度之眼】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 201
原创 【深度之眼】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 599 2
原创 【深度之眼】Pytorch框架班第五期-Week7【任务2】第一节:GPU的使用
GPU in PyTorchCPU(central processing unit,中央处理器):主要包括控制器和运算器GPU(Graphics processing unit, 图形处理器):处理统一的,无依赖的大规模数据运算数据迁移torch.cuda常用方法1、torch.cuda.device_count(): 计算当前可见可用gpu数2、torch.cuda.get_device_name():获取gpu名称3、torch.cuda.manual_seed():为当前gpu设置
2020-09-03 11:26:22 179
原创 【深度之眼】Pytorch框架班第五期-Week7【任务1】第二节:Finetune
Transfer Learning & Model Finetune模型微调Transfer Learning: 机器学习分支,研究源域(source domain)的知识如何应用到目标域(target domain).模型微调步骤:1、获取预训练模型参数2、加载模型(load_state_dict)3、修改输出层模型微调训练方法:1、固定预训练的参数(requires_grad=False, lr=0)2、Features Extractor较小学习率(params_g
2020-08-31 10:50:13 124
原创 【深度之眼】Pytorch框架班第五期-Week7【任务1】第一节:模型保存与加载
序列化与反序列化序列化与反序列化表示的是内存与硬盘之间的序列关系。1、Pytorch中的序列化与反序列化1、torch.save主要参数:obj: 对象f: 输出路径2、torch.load主要参数:f: 文件路径map_location: 指定存放位置,cpu or gpuPytorch中保存模型的两种方法法1:保存整个Moduletorch.save(net, path)法2:保存模型参数state_dict = net.state_dict()torch.sa
2020-08-31 09:45:15 150
原创 【深度之眼】Pytorch框架班第五期-Week6【任务2】第二节:Layer Normalizatoin、Instance No
为什么要Normalization?常见的Normalization——BN、LN、IN and GNNormalization小结
2020-08-28 20:49:09 104
原创 【深度之眼】Pytorch框架班第五期-Week6【任务2】第一节:Batch Normalization
Batch Normalization概念批标准化批:一批数据,通常为mini-batch标准化:0均值,1方差优点:1、可以用更大的学习率,加速模型的收敛2、可以不用精心设计权值初始化3、可以不用dropout或者较小的dropout4、可以不用L2或者较小的weight decay5、可以不用LRN(local response normalization)计算方式affine transform 增强Capacity(容纳能力)内部协变量转移_BatchNorm__
2020-08-28 20:06:05 144
原创 【深度之眼】Pytorch框架班第五期-Week6【任务1】第二节:dropout
正则化之DropoutDropout: 随机失活随机: dropout probability失活:weight=0数据尺度变化:测试时,所有权重乘以1-drop_prob, drop_prob = 0.3, 1- drop_prob=0.7nn.Dropouttorch.nn.Dropout(p=0.5, inplace=False)功能:Dropout层参数p = 被舍弃的概率实现细节:训练时权重均乘以1 / 1-p , 即除以1-pPyTorch中,Dropout在训
2020-08-25 09:54:14 200
原创 【深度之眼】Pytorch框架班第五期-Week6【任务1】第一节:weight_decay
正则化与偏差-方差分解RegularizationRegularization: 减小方差的策略误差可分解为:偏差,方差与噪声之和。即误差=偏差+方差+噪声之和偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力方差度量了同样大小的训练集的变动所导致的学习性能的变化,及刻画了数据扰动所造成的影响噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界正则化是通过减小方差来解决过拟合问题pytorch中的L2正则项-weight decay.
2020-08-25 09:17:52 182
原创 深度之眼】Pytorch框架班第五期-Week5【任务3】第一节:hook函数与CAM
Hook函数概念Hook函数机制:不改变主体,实现额外功能,像一个挂件,挂钩,hook1、Tensor.register_hookhook(grad) -> Tensor or None功能: 注册一个反向传播hook函数Hook函数仅一个输入参数,为张量的梯度2、Module.register_forward_hookhook(module, input, output) -> None功能:注册module的前向传播hook函数module:当前网络层input:当前
2020-08-21 16:18:10 207
原创 【深度之眼】Pytorch框架班第五期- Week5【任务2】第二节:TensorBoard使用(二)
add_image and torchvision.utils.make_gridadd_image()add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')功能:记录图像tag: 图像的标签名,图的唯一标识img_tensor:图像数据,注意尺度global_step:x轴dataformats: 数据形式,CHW,HWC,HWtorchvision.utils.make_grid
2020-08-20 13:36:30 141
原创 【深度之眼】Pytorch框架班第五期-Week5【任务2】第一节:TensorBoard使用(一)
SummaryWriterclass SummaryWriter(object): def __init__(self, log_dir=None, comment='', purge_step=None, max_queue=10,flush_secs=120, filename_suffix='')功能:提供创建event file的高级接口主要属性:log_dir: event_file输出文件夹comment: 不指定 log_dir时,文件后缀filename_suffix..
2020-08-20 10:36:02 177
原创 【深度之眼】Pytorch框架班第五期-Week5【任务1】第一节:学习率调整
学习率调整Class _LRSchedulerclass _LRScheduler(object): def __init__(self, optimizer, last_epoch=-1): def get_lr(self): raise NotImplementedError主要属性:optimizer: 关联的优化器last_epoch: 记录epoch数base_lrs: 记录初始学习率主要方法:step(): 更新下一个epoch的学习率get_lr(): 虚
2020-08-18 20:40:38 158
Gabor-SVM和PCA-SVM人脸识别程序
2018-09-16
奇异值分解( 英文文档)
2017-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人