怎么读一个网络的代码

1.网络代码怎么来的?
我想要实现一个功能,这个功能是输入一张图像,返回一个类别结果。
所以很明确就有三个部分,一个是接受图像输入,一个是处理图像得到处理结果,一个是对处理结果判断生成结果。
现在想要使这个功能更好更精确,所以需要改善中间的图像处理部分,更够更加精细的,更加准确的处理方法,以至于出现了数据预处理,特征提取,特征增强,特征融合,模型训练等多个模块。
这些模块有机组合,就构成了一个神经网络。与之对应的代码就是网络代码。
必须要说明的是,网络模块与代码是一一对应的。

2.怎么去读代码?
第一步要做的是弄清楚那一块代码对应哪一个模块,输入从哪里进,最后结果从哪里出,而不是直接上手,硬啃。一般而言,网上的代码虽然注释少,但基本大模块的归属还是会标出来的。
第二步就是熟悉一些基本的python语言,比如要熟悉pytorch和tensorflow构建网络的方法格式;还有像numpy的数据处理,tensor的格式转换;if,for,while等语句使用方法。
第三步,生啃。这是必须经历的事情,想要了解所有,就必须尽力一切。好在现在又ChatGPT等工具的帮助,可以快速的帮你完成这个过程。把所有不知道的地方给放到ChatGPT中,自己给代码做一遍注释。

3.运行代码
即使你能看懂代码了,代码仍然存在很多问题或者bug。数据路径,安装包版本,日志存储,等等。
在这个过程中,你要知道输入的数据在那个地方处理,又进入到哪一个模块,经过什么变化,得到什么结果。如果你能盯着数据在模型中走一遍,那么这段代码对你来说,即使可以用了。
有一个技巧,就是用print打印你的数据,时刻观察。当然也可以用Dbug,但不会用,你可以自己琢磨。

4.掌握
你可以想象得到,你的数据是怎么被处理,中间的过程,可视化一样出现在你的脑海中。预处理部分怎么被剪切,然后缩放;特征提取中卷积怎么提取,池化怎么扩大感受野;特征增强怎么进行,注意力权重怎么提取,两个矩阵怎么相乘;怎么把一个二维数据展成一维,怎么减少通道数,怎么归一化;结果怎么输出,损失函数怎么处理,网络参数怎么更新。如果你能够想象到这些,那么这个网络你算是弄清楚了。就可以开始自己尝试构建其他网络或者自己更改模块。

你可能感兴趣的:(学习,笔记,神经网络)