1
shinsekai 2023-06-07 22:38:36 +08:00
matlab 的话可以用 mlx 实时脚本或者使用%%分段运行
|
2
Alias4ck 2023-06-07 23:12:05 +08:00
可是你工程化的时候就不能这么做了啊
|
3
thinkershare 2023-06-07 23:39:12 +08:00
基本的不需要 Debug, Debug 也是跑 UnitTest/Log/端点单步调试, 任何工程性质的项目都不会使用 ipynb 这种模式,这个模式只是提供给交互场景这种及其有限情况下使用的。
|
4
eagleoflqj 2023-06-07 23:41:01 +08:00
ipynb 就是用来干这个的,其他语言要么也有这种功能(比如 mathematica ),要么压根不适合做数据处理
当你用 python 做别的,比如写 django 后端,自然就不用 ipynb 了 |
5
lithiumii 2023-06-07 23:41:07 +08:00 via Android 2
因为你在做的事情是探索性、实验性的,人为介入是流程的一部分,最终成果不一定是代码而是某个问题的答案,所以写一段跑一段改一段很方便。MATLAB 和 R 的用户也是这样。
写工程代码的人,交付的是代码,代码要在无人介入的情况下跑千遍万遍无数遍。在代码能这样跑起来之前,也有逐步运行或者分割运行的情况,可以靠 debugger 或者自动重载的调试模式、单元测试、打日志、反复运行看结果等等。 此外,其实 Jupyter 可以跑很多很多语言,名字里就有仨( Julia 、Py 、R ),此外什么 C 啊 C++ 啊 JS 啊等等都有。 |
6
geekdonie 2023-06-08 00:41:05 +08:00
有需求,使用合适的解决方案,没什么可疑惑的
|
7
zhzy 2023-06-08 00:52:24 +08:00 via iPhone
支持 rrpl 的语言都可以吧,只是可能没有一个像 ipynb 那样具体的文件
|
9
pcbl 2023-06-08 01:09:34 +08:00 via Android
只能说羡慕楼主工作中可以写这种各部分关联性不强的代码。我这边生产用到的代码已经是面条状态了,想单独调试运行一部分那是不可能的。
|
10
dayeye2006199 2023-06-08 01:19:26 +08:00
LZ 你需要的就是 literate programming 。边写程序边研究下面怎么干。
如果你想写出比较健壮的代码,可以采用测试驱动编程。 比如先写特征处理的代码,然后把形状、结果的数字什么的编写到测试里。然后再去做代码实现。 跑测试的时候,可以整个测试数据集,数量小一些,可以比较快的得到结果。 |
11
Contextualist 2023-06-08 01:32:19 +08:00
越过现象看本质:无论什么领域的代码、无论多大规模的项目,维护靠的都是模块化,即把一个项目拆分成尽量相互独立的部分,以便管理维护。
对于一个 .ipynb 文件,单元格就是一种模块化。而一个组织良好的 Python 项目并不会是单个 .py 文件,而是会包含许多相互依赖的 .py 文件和文件夹,它们构成了 Python 模块化中的包( package )和模组( module )。 以 debug 举例,一个 Python 项目中,一个 .py 文件实现一个具体的功能,与之对应的一个单元测试文件针对性验证这个 .py 文件的功能。所以很多时候 debug 并不用运行整个项目,而是单独运行查验一个单元测试文件。 最后多讲两句,.ipynb 是快速验证想法或者做小 demo 的利器。但如果一个项目持续增长到一定规模,最终还是整理成一个 Python 的包更有利于长期维护,因为线性组织的 .ipynb 很难维护多层的依赖关系,而且版本控制也比较困难。再说你写成一个包也是可以在 .ipynb 里导入使用的。 |
12
shinession 2023-06-08 08:36:18 +08:00
python 据说就是 jupyter notebook 火起来之后位列第一的, 对新手非常友好, 适合入门, 可以一步一步的得到想要的结果, 但是对大佬来说这功能可有可无
|
14
uni 2023-06-08 10:19:36 +08:00
这就是做草稿嘛,我也经常这么做(你们 py 工程师都是靠试的吗.jpg
我用的 vscode 的# %%,感觉比 jupyter 方便很多 |
16
smallsung 2023-06-08 11:28:04 +08:00
感觉特征向量提取后可以存到硬盘上,没必要每次运行都重新提取一次吧,还挺耗时间的。
|
17
InvincibleDream 2023-06-08 11:30:18 +08:00
ipynb 相当于记事本,py 相当于扳手或者齿轮。记事本是用来读的,扳手或者齿轮是用来操作或者作为机器本身工作的。
|
18
cordea 2023-06-08 13:14:26 +08:00
类似.ipynb 的这种东西并不是 python 独有,支持 repl 的语言都能做到类似的事,像 commonlisp 这种语言甚至就是鼓励你用 repl 来写到哪里执行到哪里。
再说 debug ,debug 是一种最后的手段,在理想情况下,潜在的错误应该在执行程序前就被发现。而找到程序执行结果与期望不一致的原因并不一定要通过“实际去运行程序”来完成。类似于 haskll ,idris 这样的语言,能够在类型层面确保程序的一致性,使用这样的语言很少需要依赖 debug 这种最后的手段。 以楼主的例子来说,模型输入 size 和特征量 size 不符,如果编程语言支持依赖类型之类的高级特性,会直接在运行前就提示你类型不符,就像往一个只接受 int 的函数里传入 string 一样。 而对于更一般的语言,比如 cpp ,由于设计上的取舍,类型系统的缺陷等等,则不得不依赖 debug 或者程序员的经验来找出错误。 |