- 博客(317)
- 资源 (11)
- 收藏
- 关注
原创 pytorch笔记(十)Batch Normalization
方法2)正态分布归一化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。使用求得的均值和方差对该批次的训练数据做归一化,获得(0,1)正态分布。和β是在训练时网络自己学习得到的,换句话说正态分布式的数据归一化变成了下面的形式来进行数据归一化。方法1) [0,1]归一化,使结果值映射到[0,1]之间。这一步是BN的精髓,由于归一化后的。为所有样本数据的标准差,映射到[-1,1]之间。
2023-05-24 21:32:57
668
原创 Pruning 系列 (九)自定义pruning方法
要实现自己的修剪函数,可以通过将BasePruningMethod基类子类化来扩展nn.utils.prune模块,方法与所有其他修剪方法相同。基类为您实现以下方法:__call__、apply_mask、apply、prune和remove。除了一些特殊情况外,您不应该为新的修剪技术重新实现这些方法。然而,您必须实现__init__(构造函数)和compute_mask(关于如何根据修剪技术的逻辑计算给定张量的mask的说明)。此外,您必须指定该技术实现的修剪类型(支持的选项包括全局、结构化和非结构化)。
2023-05-22 02:41:54
228
原创 Pruning 系列 (八)layer常用简枝(torch)方法
应介于 0.0 和 1.0 之间,表示要修剪的参数比例。的参数相对应的张量。的命名缓冲区,该缓冲区对应于通过修剪方法应用于参数。替换为其修剪版本,而原始(未修剪)参数存储在名为。不改变主体,实现额外功能,像一个挂件,挂钩,hook。通过删除随机选择的(当前未修剪的)单元的指定。输入模块的修改(即修剪)版本。,它表示要修剪的参数的绝对数量。中的参数名称,将对其进行修剪。) -要修剪的参数数量。) -包含要修剪的张量的模块。仅一个输入参数,为张量的梯度。模块(nn.Module)
2023-05-19 00:37:38
461
原创 Pruning 系列 (七)稀疏训练
# 稀疏训练(Sparse training)步骤:(针对weight)# 初始化一个带有随机mask的网络# 训练这个pruned network 一个epoch# 去掉一些权重较小的一些weights(或者不满足自定义条件的weights)# 重新生成(regrow)同样数量的random weights
2023-05-18 01:22:31
669
原创 Pruning 系列 (六)remove剪枝
直接remove的剪枝:优点:可以减少模型的计算量和内存使用。可以通过减少网络容量来防止过拟合。缺点:可能会降低网络的表示能力,导致性能下降。需要对网络结构进行改变,这可能会增加实现和微调的复杂性。
2023-05-16 22:52:23
501
原创 Pruning 系列 (五)Dropout、Dropconnect剪枝
dropout在全连接层使用。在训练阶段,对于每个节点,以p概率将其输出值保留,以1-p概率将其输出值乘以0。在测试阶段,输出结果要乘以p。不同于dropout, dropconnect不是将节点的输出值置为0,而是将权值(即节点之间的边)以1-p概率乘以0。Inverted dropout: 训练阶段将输出值再除以p。这样测试阶段不需要任何增加的计算。可以看到,这样增加了测试阶段的计算量,影响测试性能。
2023-05-15 01:12:19
428
原创 Pruning 系列 (三)权重大小与梯度幅度修剪
和基于权重的方法类似,一个直观的思路就是 如果某个神经元的累计梯度较小,则删除,但是这么做是不合理的,因为可能某些神经元初始化的结果本身就比较好,所以后续需要的权重更新也比较少即可,所以结合的方式就是根据梯度和权重进行组合计算,例如相乘,然后进行修剪。一个非常直观且令人惊讶的有效标准是修剪绝对值(或“大小”)最小的权重。事实上,在权重衰减的约束下,那些对函数没有显着贡献的神经元预计在训练期间会缩小幅度。一种直接的方法是根据标准(例如 L 1 或 L 2)对卷积核进行排序。
2023-05-11 01:11:57
315
原创 Pruning 系列 (二)结构化剪枝
滤波器剪枝(Filter-level)主要改变网络中的滤波器组和特征通道数目,所获得的模型不需要专门的算法和硬件就能够运行,被称为结构化剪枝(Structured Pruning)。结构化剪枝又可进一步细分:可以是channel-wise,也可以是filter-wise,还可以是在shape-wise。
2023-05-10 01:01:29
738
原创 WSL2中 使用jupyter lab
Jupyter lab是一个交互式笔记本,支持运行40多种编程语言。它本质上是一个web应用程序,可以很方便的创建和共享程序文档,支持实时代码,数学方程,可视化和markdown。在学习python的时候用来写笔记非常方便,强烈安利大家。
2023-05-09 01:20:45
738
原创 Pruning 系列 (一)非结构化剪枝
非结构化修剪得粒度是最细的,因为直接针对的就是某个神经元,因此这类精细的修剪放大足以在不显著影响性能的情况下成功实施。如此精细的粒度允许修剪非常微妙的模式,例如卷积核内的参数。由于修剪权重根本不受任何约束,并且是修剪网络的最佳方式,因此这种范式称为非结构化修剪。
2023-05-09 00:52:45
807
原创 Pytorch/Paddle topk 与 Numpy argpartition 函数应用
torch.topk 、paddle.topk、numpy.argpartition 函数应用
2022-12-21 15:28:17
726
1
原创 PGL 系列(一)图的基础概念
图的节点间是否有方向,可将图分为无向图与有向图;图的边是否有权重,可以将图分为无权图和有权图;图的边和点是否具有多种类型,可以将图分为同构图和异构图
2022-12-12 17:52:48
359
原创 Docker 常用命令
用镜像ID导出的镜像,导入显示,用镜像名导出即可解决。如果没使用 -d,当断开/退出 容器会自动停止!//如果从这个容器退出,会导致容器的停止。//利用镜像重命名后上存。//容器退出,容器不会停止。//删除镜像前先删除容器。
2022-10-31 16:58:14
154
原创 Docker GPU 调用
基本流程和普通不使用GPU的容器差不多,只是把docker默认的运行时替换成了NVIDIA的nvidia-container-runtime。当nvidia-container-runtime创建容器时,先执行nvidia-container-runtime-hook,这个hook去检查容器是否需要使用GPU(通过环境变量NVIDIA_VISIBLE_DEVICES来判断)。否则则走默认的runc逻辑。【原有的docker容器运行时runc的基础上增加一个 prestart hook】
2022-10-27 16:18:09
1152
原创 解决:Could not find library geos_c or load any of its variants [‘libgeos_c.so.1‘, ‘libgeos_c.so‘]
Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']
2022-07-04 14:41:17
3828
2
原创 pytorch笔记(七)常用“模型信息”输出
FLOPS:注意全大写,是floating point operations per second的缩写(这里的大S表示second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量,用以衡量算法/模型复杂度。MACs :每秒执行的定点乘累加操作次数的缩写,它是衡量计算机定点处理能力的量,这个量经常用在那些需要大量定点乘法累加运算的科学运算中,记为MACs。.
2022-06-09 18:34:25
456
中文知识图谱研讨会演讲
2017-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人