常用工具(git/gdown/curl/torchsummary/netron/hotp/ps)
1 Git版本控制
1.1 得到一个git仓库
git clone git@xxx # 从远程代码仓库克隆一个
cd /workdir && git init # 将本地目录初始化成一个git目录(生成.git文件夹)
git remote add <主机名> <远程仓库的url> # 通过git remote -v 查看
git remote add origin git@gitlab.company.com:repository/model.git
1.2 修改代码,并提交代码到本地版本库
git reflog # 查看commit记录
git status # 查看修改过的文件
git add xxx xxx # 将修改过的文件手动加入索引,供下一步提交
git commit -m "注释" # 提交
注:
如果想提交所有文件,运行git add -all即可;
如果想查看之前的提交记录,运行git log命令查看log。
1.3 分支操作
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
git brach branch_name # 创建分支, 但是还没切换过去
git checkout branch_name # 切换分支
git checkout -b branch_name # 创建新分支并切换过去
git branch -d <本地分支名> # 删除本地分支
git push <远程主机名> --detete <远程分支名> # 删除远程分支
git push origin --delete branch_name
git log --oneline --decorate --graph --all # 输出提交历史,各个分支指向及项目的分支分叉情况
1.4 版本撤回
通过git log
查看commit的版本号,然后通过git reset
命令撤回到需要的版本
git reset --soft <commit id>
git reset --hard <commit id>
--soft只是改变了HEAD的指向,本地代码不会变化;--hard不仅HEAD指向变了,本地代码也会变成那个版本的代码,所以一定要小心处理。
1.5 删除远程仓库的某个文件夹target/文件file
git rm -r --cached target
git rm --cached file
然后commit/push
git commit -m 'message'
git push -u origin master
关于Git的进阶操作,可以查看以下的学习资料:
1 《Pro Git》(中文版 | English)
2 常用Git命令清单
2 cmd 快速下载Google Drive文件
pip install gdown
gdown --id FILEID
# 在Google drive点击要下载的文件,进入预览模式,即可获得文件ID,比如
# https://drive.google.com/file/d/1DTY2qu8N3vWORD7OAEEQORqzpotxSMZk/view
# https://drive.google.com/file/d/FILEID/view
3 curl命令工具
curl是客户端(Client)的URL工具,用来请求Web服务器。如果使用熟练,可以取代Postman这类图形界面工具。
# 发送表单信息有GET和POST两种方法
# curl默认的HTTP动词是GET,使用-X参数可支持其它动词,比如curl -X DELETE www.example.com
curl "127.0.0.1:8000/classification/version" # GET方法
curl -v -XPOST -H "Content-Type:application/json" "127.0.0.1:8000/video/run" -d '{"url":"a.mp4", "content":"action"}' # POST方法(-X POST)
# -v 参数显示一次http通信的整个过程,包活端口连接和http request头信息
参考资料:
1 《curl初学者教程》
2 《curl 的用法指南》
4 PyTorch: 网络结构和参数查看
Deep Learning中有很多Paper都是关于网络结构的设计。掌握一个网络结构,我觉得做到以下几点就足够了(有效性从高到低):
- 阅读论文了解其设计思路和大致模块
- 通过源码,输出一些中间feature map的shape
- 使用网络结构可视化工具查看(试了Tensorwatch和netron,觉得还是netron好看),pytorch用户可以使用torchsummary模块来了解参数情况
下面给出netron和torchsummary的使用例子:
# 对[awesome-semantic-segmentation-pytorch](https://github.com/Tramac/awesome-semantic-segmentation-pytorch)中的一些分割网络进行结构可视化
import torch
import torch.nn
import sys
sys.path.append('/path/to/awesome-semantic-segmentation-pytorch')
from code.models.bisenet import BiSeNet
import netron
import torchsummary
net = BiSeNet(19, backbone='resnet18')
onnx_path = "bisenet.onnx"
torch.onnx.export(net, torch.rand(1, 3, 1024, 2048), onnx_path, opset_version=11)
netron.start(onnx_path)
print(torchsummary.summary(net.cuda(), (3, 1024, 2048))
参考资料:
使用netron工具可视化pytorch模型
5 进程和资源管理
- htop命令
- ps命令
# 查看某个cmd对应的进程信息
ps -ef | grep xxx
# 查看某个多进程程序下的所有进程
ps aux | grep xxx | awk '{$print $2}'
# 一次性kill
ps aux | grep xxx | awk '{$print $2}' | xargs kill -9
- Linux屏幕输出重定向
cmd > file.txt 只会保存标准输出; 尽量使用cmd &> file.txt,可以保存完整的输出信息。