这是在日常学习中积累的一些实战技巧,比较实用,但不太方便归类,所以放在这里。
数据集存放
数据集,存到一个位置就好了。。对于每个项目,不用把他们移到项目路径中的dataset下 软连接是个好东西啊:
ln -s /path/to/kitti data/kitti
学到了,向过去的自己说声,真蠢。
conda环境配置
在复现项目的时候,对每个项目建立一个虚拟环境,避免各个项目之间产生量子纠缠玄学问题,导致最后心态爆炸。但对于每个项目,从头搭建大家都共有的基础环境(torch啥的)十分痛苦。这个时候,可以用下面的命令,复制已有的环境,这样就可以在已经搭好的环境的基础上魔改了,哈哈哈。
conda create -n new_env --clone exist_env
- new_env 是自己新创建的虚拟环境名称
- exist_env 是被复制的已经存在的环境名称
参考资料: https://www.jb51.net/article/257546.htm
ssh远程断点调试
参考: https://docs.python.org/zh-cn/3/library/pdb.html
使用pip包ipdb:
pip install ipdb
使用时:
import pdb
# 在要打断点的位置输入:
pdb.set_trace()
pdb常用指令:
h(elp) [command]
不带参数时,显示可用的命令列表。参数为 command 时,打印有关该命令的帮助。help pdb
显示完整文档(即 pdb
模块的文档字符串)。由于 command 参数必须是标识符,因此要获取 !
的帮助必须输入 help exec
。
w(here)
打印堆栈回溯,最新一帧在底部。有一个箭头指向当前帧,该帧决定了大多数命令的上下文。
s(tep)
运行当前行,在第一个可以停止的位置(在被调用的函数内部或在当前函数的下一行)停下。
n(ext)
继续运行,直到运行到当前函数的下一行,或当前函数返回为止。( next
和step
之间的区别在于,step
进入被调用函数内部并停止,而step
(几乎)全速运行被调用函数,仅在当前函数的下一行停止。)
r(eturn)
继续运行,直到当前函数返回。
c(ont(inue))
继续运行,仅在遇到断点时停止。
whatis [expression]
打印 expression 的类型。
p [expression]
在当前上下文中运行 expression 并打印它的值。
备注:print()
也可以使用,但它不是一个调试器命令 — 它执行 Python print()
函数。
display [expression]
如果表达式的值发生改变则显示它的值,每次将停止执行当前帧。
不带表达式则列出当前帧的所有显示表达式。
q(uit)
退出调试器。 被执行的程序将被中止。
retval
打印函数最后一次返回的返回值。
利用wget下载需要登录的数据集
https://github.com/cemsaz/city-scapes-script
vscode生成头部注释和函数注释
插件: Korofileheader
https://github.com/OBKoro1/koro1FileHeader/wiki/%E5%AE%89%E8%A3%85%E5%92%8C%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B
numpy==1.19.5和其他包要求>=1.20.0冲突时
以pomegranate包为例,安装0.14.0版本即可
pip install pomegranate==0.14.0
# 0.12.0也可以
pip install pomegranate==0.12.0
numpy会报一些奇怪的错误,通常是版本不对引起的
目前我的默认是1.24.4的版本,如果报
AttributeError: module ‘numpy‘ has no attribute ‘long‘
可以试试1.23.0版本的numpy
如果报
ValueError: numpy.ndarray size changed, may indicate binary incompatibility.
可以试试1.19.5版本的numpy
debug
vscode中如何带参数调试python程序
在launch.json
中写入:
{
"version": "0.2.0",
"configurations": [
{
"python": "/home/zdliu/anaconda3/envs/py37/bin/python3", // 指定python解释器
"name": "Python: train",
"type": "python",
"request": "launch",
"program": "/home/axjia/train.py",
"console": "integratedTerminal",
"env": {"CUDA_VISIBLE_DEVICES":"0,1"}, // 指定显卡
"cwd": "${workspaceFolder}", // 工作目录
"args": ["--train_dir", "./input/train_data", // 命令行参数
"--dev_dir", "./input/valid_data",
],
"justMyCode": false # 调试封装包里面的代码,可以在里面打断点
}
]
}
调试时各种操作的含义
文档信息
- 本文作者:焦逸凡
- 本文链接:https://ailovejinx.github.io/2022/12/07/blog-tricks/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)