深度学习基础课:重构并加入调试日志和测试代码

大家好~我开设了“深度学习基础班”的线上课程,带领同学从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
posted @   杨元超  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示