经查找现有大部分代码均为大佬们编写,虽效果好用但是难以自己修改,代码内部逻辑对于我自己这种小白来说比较难吃透,因此决定自己在学习大佬们的代码后,自己搭一个自己较为清晰的代码结构。虽然有重复造轮子之嫌,但是总觉得不合适自己的轮子很难走的很远。希望自己搭好自己的架构后,可以在此基础上进行很简单的修改来实现不同深度学习模型的训练与测试功能。同时也想在此记录下自己的整个代码思路,方便自己后续回看学习,同时若是能对其他和我一样看不懂其他大佬代码的同学产生帮助则十分开心。下面将从一个小白的视角来对代码进行注释和解释,初窥门槛,如有不对的地方,还欢迎大家多多交流指正。
很想像大佬们一样,将深度学习的代码分为若干个独立的部分,将每一个部分模块化,就好像一个个积木块一样,而网络模型只是其中一个积木。这样在使用不同的模型时,就好像将网络模型这块积木拿下来换成其他的积木块,加载数据、参数等其余积木块均不需要发生变化,这样整体代码更为稳定,也更方便不同模型之间的比较。
基于此,参考github上若干个代码,将我自己的代码分为一以下几个主要模块:
main.py | 主函数代码,在terminal中运行main.py即可训练模型 |
dataload | 数据加载部分,功能以确定形式为加载数据集 |
main | 主要运行程序部分,包含了单次循环中的代码,如train、validate、test等函数 |
model | 模型部分,包含了各种神经网络模型 |
utils | 这部分代码为各种小的函数模块,比如有各种loss函数、参数parse函数等 |
除此之外,还会包括可视化模块visual,以及由于我目前在做的是核磁共振图像(MRI)处理,因此还有有关MRI图像处理的mri模块,以及不包含代码的datasets数据集部分、runs运行结果部分、test测试部分等其他模块。
下面几个博客中我会依次详细的对我的代码结构进行描述,方便我自己后期的回看,也方便大家阅读,由于整体需要写一段时间,写好后将在本文中附带不同部分的跳转链接。整体的顺序将为:
1.main.py函数
【深度学习模型代码结构】第1篇——main.py(上)-CSDN博客
2.dataload部分
3.main部分
4.utils部分
5.model部分