pytorch学习积累
~LONG~
这个作者很懒,什么都没留下…
展开
-
.detach()和.clone()的区别
最近在Pytorch下手搓神经网络计算图时,遇到了一些问题,我发现很多莫名其妙的梯度中断或者tensor值异常都源自于相应的,为了保证梯度连续,往往需要再找一个变量,先赋值,再对新变量处理。或者就把运算符写开:tensor = tensor + new_tensorer而不是tensor += new_tensorer。原创 2024-04-12 15:12:14 · 272 阅读 · 1 评论 -
open-mmlab/mmdeploy部署常用步骤及命令行
最近在用MobileVIT跑分类,突然发现mmdeploy项目部署训练真的超级方便,记录一下训练历程,有一个容易忘记的是记得修改work_dir,这是工作空间,忘记修改很容易覆盖掉前边的。这里直接指定配置文件就行了,训练时预训练权重在配置文件里已经指定了。参数这个我一般不用,需要改的在config改了。对测试集全部测试:这个是批量测试。5. 最后放一下官方文档链接。,防止以后再使用时遗忘。2. 修改网络配置文件。原创 2024-04-12 14:59:02 · 248 阅读 · 1 评论 -
寻找网络训练最佳超参数方法
记录一下使用ray[tune]的方法。。main函数中调用train_accuracy函数对指定范围的超参数进行训练,这里可以通过。reduction_factor=1.5来选定保护轮次大小150和最大终止范围1.5倍。最后是指定几组同时运行寻找最佳超参数。在训练函数最后记得report。在训练函数内先指定待变化的超参。原创 2023-09-11 18:50:43 · 141 阅读 · 0 评论 -
神经网络反向传播过程中,函数中间变量梯度的查看、修改方法(计算图中间变量梯度查看、修改方法)
很多时候在BP过程中需要查看某个变量的梯度,来看看到底在梯度计算和计算图计算过程中发生了什么,如果是叶子节点,或是神经网络内部的节点,或者是loss等值还好,可以使用pytorch自带的 .grad 方法直接查看。但是如果想查看的中间变量是自定义函数计算过程中的非叶子节点,这些中间变量的梯度在函数执行后是不能在函数外查看的,就需要用hook的思想,把他勾出来记一下。原创 2023-05-11 16:19:59 · 688 阅读 · 0 评论 -
命令行读取用户输入参数,快速调整代码中的超参数进行训练
上边的这个示例中,使用argparse模块创建了一个ArgumentParser对象,并添加了三个超参数:batch_size、learning_rate、clip。我在训练一个自己的mlp网络,但是我发现一个问题,就是调整超参数的时候,调节batchsize,学习率,梯度裁剪等一些参数,每次我需要调节时都需要在代码里找到这些超参数的位置。可见,使用argparse模块,将超参数转化为命令行参数,这样就可以在命令行中方便地输入并调整超参数,而不需要每次手动修改代码。原创 2023-05-11 15:59:48 · 188 阅读 · 0 评论 -
捕获神经网络训练过程中的Checkpoints方法
有时候自己写的网络模型在训练时想看某个epoch的模型参数,或者想按照某一epoch的模型参数进行测试,就需要看log相关的checkpoints。原创 2023-03-23 12:23:02 · 1167 阅读 · 0 评论 -
loss不下降,loss震荡的原因
1、梯度消失或爆炸:神经网络层数较深,可能出现梯度消失或爆炸的情况,导致无法正确更新网络参数,从而导致loss函数的摆动。2、学习率过大或过小:学习率过大会导致训练过程中震荡,而学习率过小会导致训练速度过慢,可能需要通过调整学习率来解决这个问题。3、过拟合或欠拟合:过拟合或欠拟合都可能导致训练后期的loss值波动较大。过拟合指模型在训练集上表现良好但在测试集上表现不佳,可能需要增加正则化项或减小模型复杂度;欠拟合指模型在训练集和测试集上表现都不佳,可能需要增加模型复杂度或增加训练数据量。原创 2023-02-23 17:30:17 · 7385 阅读 · 0 评论 -
pytorch中使用torchviz可视化某网络或loss函数计算图后,计算图节点的理解
torchviz输出网络结构计算图,计算图节点的理解原创 2023-01-30 17:38:35 · 1529 阅读 · 1 评论