- 博客(69)
- 收藏
- 关注

原创 相对导入和命名冲突以及格式和工具的使用
这块代码还是得再熟悉下和数据相关的部分;顺便吐槽下vim编辑的格式,也许我真的该升级vim的版本了,它的好处在于让我可以专心在键盘上操作,不好在于python这种十分重视格式的地方,没有自动化的代码格式编辑,是真的不如用pycharm方便,可能主要是我还不是很熟悉vim的操作,装检查格式的插件flake8又遇到网络问题,还要各种配置感觉很烦,索性就把pycharm当编辑器了,因为版本的原因,没法加载我虚拟机里的解释器,所以每个工具有其主要的功能,发挥主要优势就行,不用所有工具都万能。
2024-04-02 13:24:13
259
6
原创 ../aten/src/ATen/native/cuda/Loss.cu:115: operator(): block: [192,0,0], thread: [95,0,0] Assertion
虽然报错是在pos = (truth>0.5).float() ,但实际出错的原因是模型的值输出超出了F.binary_cross_entropy()能够接受的范围,其函数没有sigmoid归一化的机制,如果模型本身带有sigmoid归一化还可以避免这个错误,否则就可能出现上述的错误;使用.min().item()打印其值,发现最小值确实小于0,不符合损失计算的预期;而以为有错的truth,用truth.unique().cpu().numpy()打印发现值为0和1,符合预期;
2025-05-08 14:24:51
121
原创 RuntimeError: shape is invalid for input || RuntimeError: Sizes of tensors must match except in dime
torch.cat((feature_cnn, feature_tf),dim=1),提示说二者高宽不匹配,这里可以根据特征图或模块进行修改,但是有时,这种尺寸不匹配可能是由于模型设计初期的一些假设不再成立所致,比如原来的代码是针对tiny版本设计的,但是加载的模型和预训练都是base版本的,就导致整个尺寸参数设定都不同,这样要改的就很多了,如果是要调通,就先按照预定的tiny版本以适配当前整个代码流程。
2025-05-08 13:26:19
180
原创 Input type torch.cuda.ByteTensor weight type torch.cuda.FloatTensor
这个错误出现在张量和模型虽然放在cuda上,但是其中一个并不是FloatTensor这种通用类型的情况,通常需要检查在数据加载的时候改动了哪些数据有关的部分,比如我的情况,在数据增强的时候,分别输出了原始数据和增强后的数据,那么如果还是按照原来的加载模式通过一个索引名字的方式访问某个数据,那么可能导致访问的是没有数据增强的原始数据,其处理的类型不符合代码的预期,具体的操作还可以检查所报错的类型,改为.float()等情况。
2025-05-08 11:59:51
129
原创 ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.
有时候模型的预测出现明显的错误,就会出现预期是两类的概率,实际上只有一类,这种情况需要写错误处理机制,其返回的写法决定了不同的结果:try:pass这里不用在try和except的时候分别返回不同的值:try:return 0而是正常的返回变量:try:pass。
2025-05-08 11:55:45
147
原创 RuntimeError:Given groups = 1, weight of size [output_channel, input_channel, kernel_size,...
这个错误很常见,是卷积或者其他提取器发现输入的张量的通道数不符合其设定的输入通道数,通常在按照提示错误的行找到出错模块,打印一下形状以确认出错位置:如果是模块,直接打印,如果是张量就打印.shape。random.shuffle(image_files) #前面的排序是默认的,打乱是指定的。如果它确实都用的一样的环境的话,你明明可以直接看人家代码里用的什么环境aaa。上述设备上部署的不同的对比模型,还在调试形状符合与否的问题。或者从输入改起,让其输入的形状符合后续的维度上的要求;#构造训练集和验证集。
2025-05-08 11:48:14
492
原创 数据上传服务器后隐藏目录导致的数据读取失败难以检查
这个目录经常出现在上传到服务器之后的目录下,由于路径存在,后缀也符合,通常不会报错,但是读出来的是空值,而且编号多和已有的编号重复,就算是通过语句find . -type f -printf "%f\n" | sort > xxx.txt 输出,也不会发现包含./.ipynb_checkpoints/隐藏目录,只有在找到prefix_00000xx-checkpoint.jpg。
2025-04-27 11:25:16
154
原创 RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously
由于使用了多个输出计算交叉熵,而且调用的是F.bce(),而非nn.BCE(),前者不会自动处理输入数值超过0~1范围的情况,所以当pred的范围超出了预期的概率范围,就会出现上述的错误,解决就是先归一化再用F.bce()或者直接调用nn.BCE()。出现这个错误多和数值有关,比如输出的类别数和标签的类别数不匹配,或者输出的范围不符合所调用函数的处理范围,具体到交叉熵这个使用错误,也是通过打印前后的几个变量看输出到哪里发现的,另外和人交流的时候会想着要怎么表达,很自然地就能把问题找到;
2025-04-17 11:04:18
723
原创 No dashboards are active for the current data set.
出现这个错误,尤其是在当前环境中生成的event文件通常不存在权限和写入和读取的版本不匹配问题,通常是路径不需要具体到哪个event文件,而是给出包含它的那个文件夹即可,这是一个经常容易错的点。
2025-02-25 10:54:40
153
原创 torchnet构建和安装使用setup注意事项
类似地安装mmcv的时候也有类似的错误,主要的原因推测是torchnet本身作为torch的扩展,有许多依赖项需要满足,而且torchnet的安装若使用pip install torchnet==没有直接可用的版本,需要下载源码进行本地构建,所以并不是一条pip命令就直接解决了,而是要分步运行自带的setup.py文件,虽然在其他一些情况下,这种运行setup.py的方式被认为是过时的,但似乎也取决于setup.py的具体实现。1.在pypi手动下载常用版本(或者自动安装时的版本)的torchnet。
2025-02-24 13:15:24
282
原创 vscode调试和环境路径配置
发现确实是因为重装导致的路径改变,路径改到和python解释器的一致即可(而且之前为了给一个无名环境命名,写了一句什么命令,结果后面新建的环境都会在这个命名下创建,也不知道怎么去掉)。于是重装了一个python=3.8的版本,并把python interpreter换成这个也不行,甚至换到3.9也还是报这个错;路径指向正确的 Python 3.8 或 3.9 解释器。文件夹中),确保调试配置正确。
2025-02-13 00:21:23
343
原创 深度学习模型并行引出的内存碎片问题的解决
共享内存,内存池还有数据分片是针对框架这一层面,从语言上来说是C++这一层面的,而深度学习通常编辑的是python这一层面的代码,所以对内存等的使用和管理通常是通过框架的一些自动化管理或者接口调用来实现的,实际训练如果遇到上述资源不足等问题,有意识地考虑到需要通过。(不必同时调小batch_size),但是并行的过程中两个程序的数据加载速度都很慢,而且并行了一段时间,计算机似乎重启了,不清楚是哪个问题导致的。的分析发现基本符合:CPU利用率低,内存利用率中,I/O操作少,响应时间快,也就是存在。
2025-02-11 14:06:07
1065
2
原创 区分模型的物理存储大小和GPU上显示的显存占用
**初始显存占用**:模型加载到GPU时,显存占用不仅包括模型参数,还包括框架的运行时开销、中间变量、优化器状态等。- **显存占用变化**:训练过程中,显存占用主要受中间变量和优化器状态影响,而这些在训练过程中相对稳定,不会随epoch数显著增加。- **显存占用**:显存占用不仅包含模型参数,还包括框架开销、中间变量、优化器状态等。因此,显存占用通常大于模型的物理存储大小。- **总显存占用**:显存占用是模型参数、框架开销、中间变量等的总和,因此不能直接等同于模型的物理存储大小。
2025-02-08 13:15:01
221
原创 区分可视化模块参数和预测结果
此时回头检查发现模型的输入里,visual的值为False,也就是可视化模块参数的开关并没有开,混淆上述操作的问题在于改变这个开关并不会直接影响对数据预测的图。就算这个开关绑定到某个模块,因为去掉了这个模块而影响了输出的预测图,但是也要注意,这里的预测图的可视化和模块参数的可视化通常是两回事。而当看到输出结果的目录中的visualxxx会下意识联想到此,但是这里可能是训练时,预测结果的输出,是另一个名为save_on_batch的函数实现的,对预测和标注的可视化的对比;
2025-02-08 12:19:12
222
原创 代码报错只是代表方向
而通常在缺乏经验的时候可能会认为是不是cv2的版本不对,或者resize的尺寸有什么问题,虽然图片尺寸改变,确实会导致一些和图片尺寸相关的模块出错,比如,在img_size为224的时候没问题的代码,改成256的时候,就在拼接时出了错,具体还需要进一步验证一下是不是这个原因。加载数据之前,判断路径下的文件都是期望的后缀也就是期望的格式的文件。
2025-02-07 20:31:08
189
2
原创 每天定个小目标吧-写三篇博客
还有做事的顺序问题,感觉还是简单点,尽量别引入太多变量了,就像要定期打扫卫生,清理电脑和手机,东西一多,就容易被不是很强相关的变量干扰,因为有些东西是生活中你可能常接触所以比较敏感,但不一定在工作和学习中也是如此的,所以,简单地去生活,哪怕有点枯燥,可以尝试着每次一小步,是的,就是拆分得细致一些,不必每一步上都很着急,但是作为成年,确实应该想想吃饭问题。
2025-02-07 11:38:34
110
原创 数据传输-工作习惯问题
由于换笔记本,要在新的笔记本上工作,把原本的数据通过移动硬盘拷贝过来,拷贝之前检查的时候没有太多的图片文件,结果不知怎么,不小心选到了一个没有压缩的图片文件夹,笔记本运行到那,速度特别慢,传输了22小时,只传输了8%,由于新机器上的网络访问有问题,要在原本的机器上下载文件,心心念念地wsl,看见了就想点进去结果就卡住了,本来卡了一下又恢复,结果鼠标飘过wsl的上空,似乎就又导致黑屏了,感觉buff叠满了;1.转移文件是为了在新的笔记本上尽快开展工作,所以应该首先转移一些最需要的。
2025-02-05 14:41:26
402
1
原创 CUDA out of memory内存碎片解决方法
尝试清理内存缓存 (),并减少批量大小。使用来避免内存碎片。通过nvidia-smi检查 GPU 内存是否有意外占用。尝试按需加载模型或使用checkpointAPI 来减少显存使用。如果问题仍然存在,可能需要进一步检查代码中的内存管理,或者使用更高效的模型或硬件。4o设备级碎片:即使nvidia-smi显示没有异常内存占用,仍然可能存在 GPU 内存碎片,因为它显示的是总的使用情况,而不是内存是否碎片化。你可以通过检查和来进一步诊断。程序级碎片。
2024-12-28 20:55:37
1570
原创 给vscode的新项目选择虚拟环境
按照通常的步骤新建了.vscode文件并生成了launch.json,都是通过左栏的调试按钮里的create a json file,但是 运行时还是没有识别,之后看到下面的这个链接里,图中是在>之后选择的环境,于是: ctrl+G出现搜索框,把:删除换成>,之后就找到了选择虚拟环境的按钮,vscode的这些操作因为是配合快捷键唤醒的,其实还算比较简单容易上手,调试也还可以,不过git版本管理这块,还是稍微有点没有用习惯,所以还是会有些冗余文件特别是脚本文件。
2024-12-28 20:18:01
903
原创 VSCode+WSL作为IDE开发和管理深度学习项目
安装工具作为学习的第一步,常常也成了坎,但是一个好的工具真的能减少很多麻烦,最后选了这个工具组合也是之前试了太多错总结的,其他的比如vim+jupyter这种的,对大点的项目和修改不友好,新手还是应该认清自己的水平,不要在这些工具的学习成本上给自己太多限制,不必迷恋极简主义那一套,反而搞得形式上极简了,过程无比复杂,没必要组合最好的或者自认为最好的几个组件,因为可能并没有想象的那么兼容,总之克服多余的执念,继续加油吧!今天安装之前把之前的基本都删了,还有一些用管理员也删不掉的json文件就先扔着了;
2024-12-24 17:02:48
741
原创 使用git管理项目版本
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义_python中git显示不同颜色-CSDN博客
2024-12-24 14:19:08
332
原创 【无标题】
虽然奥卡姆剃刀原理可以让问题变简单,对,我们的目标是简化问题,而不一定是工具要简单,因为vim这种的工具此时不一定好用,还是在于你熟悉哪个工具,在现阶段的熟练度上的学习成本和你用这个工具的产出看,来选择用什么工具,工欲善其事必先利其器;其中pred是模型输出,因为对这个任务切换不太敏感,所以一直没找到原因,后来是参考同学,用 git管理版本更好地查看哪里改动了什么代码;重新部署了原版的代码,在调通的过程里,发现是任务切换的问题;
2024-12-03 21:16:59
213
原创 论文阅读:LaVIT-很容易三分钟热度
中午种花,有了点感想,如果能预期成熟后的形态,就可以确定花的种植间距,以保证水土风阳光这些都是充足的,但是多年生和一年生的植物的情况有所不同:前者生长缓慢,寿命长,后者生长快速寿命短,这对矛盾似乎无法缓解,我感觉模型的设计上也有这个问题,因为通义实验室的强调动态地调整,基于动态地补充数据,因为他们确立了不是一次性的模型,所以在结构上,后期的可维护性上,我觉得这两种思路决定了维护成本,而通常认为学界和业界在这方面还是差异巨大,可以说是分工不同;
2024-12-03 21:15:13
185
原创 科研还是一心一意地做
关于工具的使用,我真的推荐sourcetrail,特别是在代码的目录结构不太行的时候,比如你遇到一个报错,没有属性I,但是这个报错也是人写的,如果定位点没有选择正确还是很难找到出错的地方,特别是对于那个基于什么库的代码,很多人不愿意搞这种的,就是因为基于库,封装得太好找不到,但是sourcetrail这类源码阅读工具就是破解这种问题的,最开始是用来解读nnUNet的,所以类似nbdt还有mmsegmentation这些库,都是可以的,只要你有耐心,它已经提供了上帝视角;自己搭真的要花几个月?
2024-12-03 21:12:57
726
原创 专讲debug的文章
还有一个我容易忽略的部分:对任务的描述,或者什么代码意图,这块是它要对齐的目标,但是写的时候可能这块不是那么容易明确的;还有一个重复命名的问题,原则是如果你不用就别定义,如果已经有了,就不多定义,需要对已有的变量?
2024-12-03 21:11:18
211
原创 AI常见同义词-关键概念
我问他那些没标的数据集的特性在通用数据集上,有没有类似的特性,他说没有,都是一个洞,就是你在那个拓扑分割的那个文章里见到的那种数据集的特征,而且人家说这个东西是之前有个项目,现在没人用,而且就是用一下,主要也没法解决这块的问题,我问当时数据集是医院的人采集的么,他似乎没正面回答,可是显然如果没有一个项目作为驱动,似乎就没有动力去做这件事,大家都在考虑利益最大化,为得到自己的目标结果,付出最小的代价,这其实就是北大那位教授要在自己的训练里避免的,强制它可以学到更多特征;具体看大家的使用方式和个人的感觉了;
2024-12-03 21:07:33
447
原创 突出主要问题,剩下的扩展根据变量出现的频次降低不确定性
这里本来运行命令是在pycharm的terminal里,因为不想单独开一个cmd里的ubuntu占内存,但实际是pycharm完成这个命令可能导致它其他的功能限制了,可能因为pycharm只是调用了cmd的什么接口,要不停地和终端通信,我猜的,反正就是这种集成工具不适合批量完成这种简单的操作,还是cmd进ubuntu进去输入命令完成比较合适,这也符合当前工具学习的思路:大模型负责当作os那一级的协调,而小的工具去作具体的事情;也就是加了一个设置:-o。
2024-12-03 21:05:27
412
原创 使用某方法前先确认该机制是否存在于研究问题中
因为代码中自定义了激活函数,在gpt解析的时候返回的是latex语法,需要环境解码,比如在typora选中inline math,并用$包围公式,就可以解码这种格式的公式: ”\text{Swish}(x) = x \cdot \sigma(x) “,引号是我为了显示原来的内容。如果你要解决的问题并不是直接可编程的,一个好的想法是,自进化,前提它得会进化,这个模式是已经存在的,你无需改多少。# 张量的维度和向量空间中的向量维度的区别是?后者通常会讨论分量的问题,前者的分量没什么意义,通常说的是维度。
2024-12-03 20:58:54
279
原创 用工具不是目的,看要实现的主要功能有什么要求
还是用逐步解决的方式,因为在学会和gpt沟通的过程中,我看了 prompt相关的skill,就比较强调沟通数据的良好结构和已经被分解成子任务有利于理解,所以发现,其实不管使用什么工具,关键是什么东西在你的脑中留下的了痕迹,而写入脑中的内容需要一些外部的辅助,就比如你用jupyter敲代码,在草纸上写写画画,你不断地debug,类似的很多刻意练习的手脑口并用的方式,都是加深你对相关问题认识的方法,当然最直接的还是和人交流,但是感觉这种问题老是遇到,而且好像没长记性,所以还是自己找了解决方案;
2024-12-03 20:56:30
258
原创 深度学习运行常见错误
view()和.reshape()的功能类似,但是实现和什么维护好像还是比较多不同的,老师讲的时候好像是从物理存储层面分析了二者的异同,反正前者要求变量在连续的空间中存储,所以在.view()之前要加.contiguous()来保证上述条件。这种问题不是读取对象不存在或者加载出错,就是cv的版本问题,我们通常怀疑后者,但实际上通常是前者的问题,尤其是环境问题已经一而再地被其他代码验证无误后,应首先检查变动因素引起的问题即:图片加载等问题。
2024-12-03 20:53:42
469
原创 python代码配置文件选择
出了bug记录一下有多重要,拾起之前一个折腾了一半的项目,发现又卡在配置这块了,是因为从官方重新下载了代码,然后一想到之前折腾配置的经历,心里就特别崩溃,这代码用的是类似mmcv那种管理配置的结构,configs文件夹下有各个模型的.yaml文件,core下又有一个总体的configs文件,而且我用pycharm,调试的时候还要搞edit_config,有时候还要在终端设置命令的选项,那段时间不知道折腾了多久,索性,我刚折腾了会,和质谱轻言交流,说要记录过程免得重复工作觉得枯燥,然后又翻开之前配置过的代码,
2024-12-03 20:50:50
118
原创 python调试-IDE-段错误
这块的调试真的就是说不熟悉,开始以为是存储的code%e的问题,一直把这个文件带着和main.py文件一起用gdb调试,后来有人建议说问问学长加快进度,学长自己也遇到过,认为是代码里的for太多,我仔细一读,代码里确实很多for的嵌套,但是和这个graph的设计有关,不知道怎么改,感觉很头大,放了两天,然后 重新调试的时候,用的是chatgpt的api而非通义的,前者对于命令的使用会更精细到某个opt能解决什么问题,然后成功用gdb调出了问题所在,然后我发现python的版本要求3.9 bush!
2024-12-03 20:49:04
309
原创 磁盘文件管理-文件损坏
整理磁盘空间,因为wsl的.vhdx文件占很大空间,在删除其中文件之后也没有减小,试了网上的办法先删除再在cmd里用相应的命令压缩空间,结果不知道是否是这个原因,还是单纯很久没访问.pth文件了,原先存的文件读取失效,需要重新下载才行。
2024-12-03 20:44:35
116
原创 文件管理-冗余
文档管理的一个核心是要去冗余,很多内容分散在多篇文章或者多个版本中,需要集成在一起,所以要选择一个合适的开始,比如老师修改完的版本就比较合适,因为老师是这方面专业的,对很多关键的东西有所把控,而所谓的要删除很多东西,是在这个基础上改,而不是说直接换一个人家过了的版本在那个基础上改,那就和自己的版本的差别又很大了,又需要适应很多不同的东西,因为有些东西不在预期之内,感觉很失控,就觉得脏和恶心,这是误分类的问题;作为关键字进行检索,那就可以进行替换了;
2024-12-03 20:43:45
135
原创 微习惯:感谢信
这时候,出现了这种情况,要先停下来审视当前的行为是出于你自身的需求,还是因为别人对你的反馈,人无完人,你不可能在所有方面都做的好,尤其是你喜欢一个人完成这所有的工作,所以,允许自己被讨厌,当别人骂自己的时候,不必要求别人把嘴巴放干净,本没有什么干净与否,而是可以学着自己不必完美,不必过于克制自身的情绪或者必须站在什么道德的高地,也可以像别人一样,有什么不满的直接说出来,哪怕那样会伤害到别人,只是骂两句,能有多大的伤害呢,人既然是相互的,为什么骂不还口呢;没有那么重要,你觉得不重要,就不重要!
2024-12-02 12:06:32
272
原创 模型训练不收敛问题汇总
根据观察到的不收敛的现象追问原因,具体问题很多,参见下文:https://zhuanlan.zhihu.com/p/285601835
2024-11-22 18:45:59
101
原创 valid jaccard is 0 in all 5 conditions, in next epoch, loss1 to loss3 and a total loss are nan
loss的NaN values 据说是因为不稳定(或者是模型的预测的数值不稳定导致loss的计算为0,所以要求检查target和output要在合理的范围内,可以写判断,也可以用数值稳定的方法)的梯度导致的,问题可能在模型的架构,也可能在学习率过高(这个比较好改,静态的话先从0.001调整成0.0001,不过这种调参能解决的问题还是机器学习的角度的问题吧;解决:判断模型的输出是否在期望的范围内,比如二类分割期望在0~1之间,目标域标签也在期望的范围内?不知道是否是这里的原因;
2024-11-12 23:54:44
442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人