实验室服务器常用命令
- 上传和下载文件
- 后台训练-使用nohup
- 打包和解压文件
- 迁移学习加载权重命令
上传和下载文件
参考链接:
https://www.jb51.net/article/82608.htm
scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>
举例:
scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数
scp -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名
scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v参数
后台训练-使用nohup
- 使用nohup进行训练
输入命令, 会返回线程号,并且会在当前目下生成一个接收输入的文件nohup.out
nohup python train.py &
- 查看输出
cat nohup.out
- 查看是否在运行
ps -aux | grep train.py
- 杀死线程
kill -9 线程号
打包和解压文件
参考链接:https://blog.csdn.net/weixin_44901564/article/details/99682926
- 打包,加-p则显示打包过程
- 解压
迁移学习加载权重
- 直接加载权重
state = torch.load(weights_pth)
net.load_state_dict(state[‘xxx_weights’])
但是需要注意输出层,如果类别数不一致会有问题,因此需要对其进行修改或不加载输出层
- 加载部分层
- 方法一
pre_train_net_state_dict = torch.load(weights_pth)
# 新的网络结构
fine_tune_net = Net()
# 新的网络结构的参数字典
fine_tune_net_dict = fine_tune_net.state_dict()
# 通过相同的key来筛选
update_dict = {k:v for k,v in fine_tune_net_dict.items() //
if k in pre_train_net_state_dict.keys()}
# 直接加载就ok
fine_tune_net.load_state_dict(update_dict)
- 方法二
PATH_TO_WEIGHTS = "coco_resnet_50_map_0_335_state_dict-Copy1.pt"
retinanet = model.resnet50(num_classes=dataset_train.num_classes(),) # 加载RseNet50权重
fine_tune = torch.load(PATH_TO_WEIGHTS) # 加载预训练权重
#print(fine_tune.keys()) #查看模型的键, 便于去掉不要的层
nouse_keys = ['classificationModel.output.weight', 'classificationModel.output.bias'] # 不要加载的层
update_dict = {k:v for k,v in fine_tune.items() if k not in nouse_keys} # 进行过滤
model_state = retinanet.state_dict()
model_state.update(update_dict)
retinanet.load_state_dict(model_state)