深度学习基础课:重构并加入调试日志和测试代码
大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序
线上课程资料:
加QQ群,获得ppt等资料,与群主交流讨论:106047770
本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章
本课程系列文章可进入索引查看:
为什么要学习本课
- 为什么要重构代码?
答:方便加入各种不同类型的层到神经网络中
重构代码
-
为了简单,本节课只考虑全连接层
-
重构的关键是定义每层的forward等函数的输入、输出为统一的抽象类型
-
通过泛型来实现类型重载,如支持全连接层和卷积层的forward函数的input参数为不同的类型(前者为Vector.t,后者为Matrix.t)
-
重构后的“构建神经网络”的伪代码如下所示:
let networkState = let Network.build(
[
LinearLayer.create(layerData1),
LinearLayer.create(layerData2)
]
)
加入调试日志
- 为什么要加入调试日志?
答:目前使用DebugUtils来在运行时检查一些值是否有异常。但是这样这不够全面,所以加入调试日志来打印训练的每轮中的每层的输入和输出,从而方便排查
加入BDD测试
对隐藏层和输出层进行了BDD测试(行为驱动测试)
相关的代码为:test
代码实现
- 重构后的入口代码为:Main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?