JULIA 如何优雅地开发机器学习项目?

在 python 项目中有 cookiecutter-data-science 这种项目tempolate 可以参考,定义好模型、需要的类之后 import,不论是用 pycharm 还是 vscode 都可以很快的进行源代码的跳转,可以很方便的 debug。而在 julia 中在 src/ 中定义好需要的函数(和类)之后,在 test/ 下面使用 include() 方式过于繁琐,而用 module 的形式写好的的代码在 src/ 之外的文件中根本没办法实现代码跳转,想问一下该使用怎样的方法才实现代码层面的优雅封装和 IDE 里面便捷的代码跳转。

之前看过一些项目,感觉 AlphaZero.jl 是规范化做的最好的,虽然一些文件需要重复的引用 module,并且会双向引用,想问一下这种项目规范有统一的标准么。同时在 test/ 下面的文件依然跳转不到 src 中,有什么办法解决么?

模板创建方面,可以考虑 PkgTemplates.jlPkgSkeleton.jl

这几个点没太 catch 到:

  1. src/ 下的代码,一般写一个主文件,然后其他文件用 include 导入
  2. include 作用类似于复制粘贴,应该是 Julia 包常用的方式,对 module 和 test 都有效
  3. include 的源码跳转是正常的,但确保装了 julia 拓展

然后,这些我觉得和开发习惯有关吧。

比如 Python 的 Pytest 是根据文件名带 test_ 和函数名带 test_ 来确认哪些是要执行测试的。相比之下 Julia 的测试方式,感觉更自然和可控:你要测哪些文件就 include 哪些,测哪些函数就 testset 打包哪些,测哪一行就 @test 哪一行,而不是用文件名来判断。


之前写了些模块开发的帖子,可以当参考:

1 个赞

Go to definition not working for packages · Issue #2339 · julia-vscode/julia-vscode (github.com) 是插件有bug

2 个赞

您写的我之前基本上都看了一遍,非常有用,:pray: