
pytorch
麓山南麓
某221机械专业本科生
展开
-
Python torch.nn.Module.register_forward_pre_hook用法及代码示例
Python torch.nn.Module.register_forward_pre_hook用法及代码示例原创 2022-11-30 21:02:28 · 850 阅读 · 0 评论 -
torch打印tensor省略的情况
torch打印tensor省略的情况。原创 2022-11-23 15:43:03 · 425 阅读 · 0 评论 -
Pytorch深度学习-权值初始化
前面学习了搭建网络模型的各个层级与结构,想要训练得到1个良好的网络模型,正确的权值初始化方法可以加快模型的收敛,相反,不恰当的权值初始化可能导致梯度爆炸或消失,最终导致模型无法训练。因此,本节主要从3方面来分析了解权值初始化:(1)分析不恰当的权值初始化是如何引发梯度消失与爆炸的?(2)学习常用的Xavier与Kaiming权值初始化方法;(3)学习Pytorch中10种权值初始化方法。梯度爆炸和消失一、理论图1 3层全连接网络与其对应的计算图根据计算图,列写出计算图的前向传播计算公式,关注第2个转载 2022-03-20 15:41:38 · 1062 阅读 · 0 评论 -
Pytorch深度学习——Tensorboard的使用
本节笔记内容具体是学习tensorboard中的两个方法分别是scalar和histogram,一共分为3个部分:(1)首先学习SummaryWriter类;(2)其次,学习两个基本方法记录标量add_scalar和直方图可视化add_histogram;(3)最后,使用scalar和histogram来监控模型指标(分别有Loss曲线、Acuracy曲线以及参数分布、参数所对应的梯度分布情况)tensorboard运行机制学习之前,回顾tensorboard运行机制:首先在python脚本里①记录要转载 2022-03-20 14:50:13 · 2844 阅读 · 2 评论 -
Pytorch深度学习—学习率调整策略
前面的课程学习了优化器的概念,优化器中有很多超参数如学习率lr,momentum动量、weight_decay系数,这些超参数中最重要的就是学习率。学习率可以直接控制模型参数更新的步伐,此外,在整个模型训练过程中学习率也不是一成不变的,而是可以调整变化的。本节内容就可以分为以下3方面展开,分别是:(1)为什么要调整学习率?(2)Pytorch的六种学习率调整策略;(3)学习率调整总结。为什么要调整学习率?①仅考虑学习率的梯度下降:②加入momentum系数后随机梯度下降更新公式:从梯度下降法公式转载 2022-03-20 14:22:51 · 4346 阅读 · 2 评论 -
Pytorch深度学习—优化器
损失函数Loss是衡量模型输出与真实标签之间的差异的。有了损失函数Loss,通过Loss根据一定的策略 来更新模型中的参数使得损失函数Loss逐步降低;这便是优化器optimizer的任务。本节优化器optimizer主要包括3方面内容,分别是(1)什么是优化器,优化器的定义和作用是?(2)Pytorch中提供的优化器optimizer的基本属性是?(3)optimizer的方法是?图1 机器学习模型训练步骤了解优化器之前,可以通过机器学习模型训练步骤简略了解一下优化器。在损失函数模块,根据模型输出与转载 2022-03-20 13:39:49 · 394 阅读 · 0 评论 -
动态修改学习率
很多时候我们要对学习率(learning rate)进行衰减,下面的代码示范了如何每30个epoch按10%的速率衰减:def adjust_learning_rate(optimizer, epoch): """Sets the learning rate to the initial LR decayed by 10 every 30 epochs""" lr = args.lr * (0.1 ** (epoch // 30)) for param_group in optim转载 2022-03-20 11:26:46 · 344 阅读 · 0 评论 -
adagrad
Adagrad是解决不同参数应该使用不同的更新速率的问题。Adagrad自适应地为各个参数分配不同学习率的算法。其公式如下:gradient比较大的时候,走的地方比较陡峭,希望步长小一点,避免走过,gradient比较小的时候,走的地方比较平缓,希望步长大一点。...原创 2021-11-13 13:00:02 · 1434 阅读 · 0 评论 -
深度学习中momentum的作用
训练网络时,通常先对网络的初始权值按照某种分布进行初始化,如:高斯分布。初始化权值操作对最终网络的性能影响比较大,合适的网络初始权值能够使得损失函数在训练过程中的收敛速度更快,从而获得更好的优化结果。但是按照某类分布随机初始化网络权值时,存在一些不确定因素,并不能保证每一次初始化操作都能使得网络的初始权值处在一个合适的状态。不恰当的初始权值可能使得网络的损失函数在训练过程中陷入局部最小值,达不到全局最优的状态。因此,如何消除这种不确定性,是训练深度网络是必须解决的一个问题。 momentum转载 2021-11-13 12:50:34 · 1178 阅读 · 0 评论 -
梯度反转层
源码地址:https://github.com/fungtion/DANN_py3from torch.autograd import Functionclass ReverseLayerF(Function): @staticmethod def forward(ctx, x, alpha): ctx.alpha = alpha return x.view_as(x) @staticmethod def backward(ctx,原创 2021-11-13 12:48:57 · 848 阅读 · 0 评论 -
dual_contrastive_loss粗略解读
def dual_contrastive_loss(real_logits, fake_logits): device = real_logits.device real_logits, fake_logits = map(lambda t: rearrange(t, '... -> (...)'), (real_logits, fake_logits)) def loss_half(t1, t2): t1 = rearrange(t1, 'i -> i原创 2021-10-19 16:58:17 · 347 阅读 · 0 评论 -
2021-09-19
5c8e5a058bc2437a30f092f8120b2f53e1124a9b原创 2021-09-19 19:28:33 · 124 阅读 · 0 评论 -
cuda11.0pytorch拓展c++的bug:/usr/bin/ld: cannot find -lcudart
stylegan2使用了c++拓展,但是加载c++拓展的神经网络老是报错我用pytorch拓展c++实现训练提速,发现老是要么莫名的load失败,发现python不能用3.6,使用了python3.8的环境,发现问题消失了。我的环境是cuda11.0,3070显卡,python3.8,pytorch1.7.1。又出现了 /usr/bin/ld: cannot find -lcudart 的问题由于我的是cuda11.0,我去我的/usr/local/cuda/lib64下只有libcudart.so原创 2021-09-17 21:21:32 · 341 阅读 · 0 评论