如何读懂深度学习项目python代码-慢慢调试

以文章multi-label learning from single positive为例;

  • 手动print打印出你不懂的地方;
  • 把不会的地方单独拎出来,重新创建一个小文件单独运行;
  • 问神奇的chatgpt,github上有个学术型chatgpt可以帮你读懂项目代码;

手动print

最笨的方法啦!不过还是要知道到底要看哪些东西,比如说对于一个函数而言,先看输入输出;

对于一个变量,以tensor为例,主要看它的形状,那么就这么写:print(f"label.shape : {label.shape}"),打印出来(16, 81),就表示batch size = 16, 每一个instance对应有81个class,还可以看它其中的值,比如想观察其中一个instance对应的数据,就这么写:print(f"label[0] : {label[0]}"),打印出来的是每一个instance而言,每一个类是真是标记的概率,会是一个长度为81的tensor,每个值是属于[0, 1]的一个数字;

就这样,哪里不会点哪里;

拎出来

这个就很有技巧了;

我一般是用Jupyter Notebook,单独创建一个.ipynb程序来写;

创建.ipynb文件常常会有问题,在Vscode中需要下载相关插件;

会遇到问你选择什么kernal,一般也就是问你要用conda里哪个环境;

还会遇到编译器不知道你的根目录在哪里,也就是相对于直接用python train.py运行程序时那个开始目录,有可能会出错;

相对路径错了,记得改用绝对路径;

(1)实在不知道哪里重不重要,把前面所有代码都搬过来

属于一脸懵逼的人,那就大把大把的复制过来吧,把需要的所有变量啊,参数啊都准备哈,再运行下边的;

(2)知道上文输入这块的是什么,也知道下文要输出什么

比如说,我想要研究class ds_model(Dataset),那我文件里只写这个class,需要什么输入呢?是一个Dataset类,是从torch里面调出来的,那没事了,我直接from torch.blabla import Dataset;

又比如,我想看source_data = load_data(data_base, P),到底是啥,我跑到load_data函数里看,需要一个Dataset类别,大手一挥自己继承torch里面的Dataset自己又写了一个新的类别,就能运行这个函数了;

上面的还属于比较低级的阶段,下面可以玩的更高级一点;

想一想为什么要输出Dataset,因为要获得数据和标签;为什么要获得数据和标签,因为要算loss;怎么算loss,把那几个tensor乘几下,blabla;然后一拍脑袋,反手写了几个对应形状的tensor,其中数值在[0, 1]之间,就把程序调通了,还因为数据用的特别简单,反而更清楚它在干什么了;

(当然你不可以转牛角尖说电脑里底层都是用0和1在做运算,所以我写一堆0和1 blabla,呵呵呵)

多在.ipynb鼓捣鼓捣就知道程序到底在干什么了,整体看不懂就把局部单独拎出来跑;

神奇的chatgpt

学术版chatgpt

你可以问学术版的chatgpt(from github),我还没有用,因为配置很麻烦;

普通的chatgpt

提问也是很有技巧性的,首先要描述清楚问题是什么,最好要举个例子,举例子的效果非常非常非常好!

比如,最笨的问法是:"下面这段话什么意思?blabla"

聪明一点是:"下面这段话是这个意思吗?我觉得可能是blabla"

哦,还要提醒,他有可能一本正经的胡说八道,记得自己去验证;

相关推荐
Hpc_Fun几秒前
医学影像 AI 工作站怎么配?五类工位、3 秒首幅的时延预算与验收脚本
人工智能
云水初3 分钟前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag
薛定猫AI9 分钟前
【技术干货】多AI团队大模型协作编排与编程项目评测架构解析
python·机器学习·ai·大模型·技术实战
外收内放10 分钟前
数据分析(图表信息详解)
python·学习·数据分析·matplotlib
FII工业富联科技服务11 分钟前
如何提升工厂空间利用率与产线 UPH?从 Omniverse 布局优化到柔性自动化改造
人工智能·机器人·自动化·智能制造·omniverse·柔性生产·ai factory
深海鱼肝油ya17 分钟前
企业级RAG问答系统(一)数据处理模块
人工智能·大模型·pdf文件解析·rag问答系统·智能分块
本原财经19 分钟前
大厂争霸AI办公:个人Agent和AI硬件哪个才是答案?
大数据·人工智能
博谷23 分钟前
2026GEO概率化观测怎么做?BUGOOAI布谷GEO的采样与指标体系拆解
人工智能·ai
强哥聊算力29 分钟前
《算力江湖·国产GPU突围:摩尔线程故事》第四集:从图形到AI:摩尔线程为什么必须冲进大模型赛道?
运维·服务器·人工智能·ai·gpu算力
点PY38 分钟前
OmDet-Turbo: Real-Time Transformer-Based Open-Vocabulary Object Detection论文精读
深度学习·目标检测·transformer