常用工具(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,可以保存完整的输出信息。
posted @ 2021-11-06 11:05  渐渐的笔记本  阅读(310)  评论(0编辑  收藏  举报