命令行服务器调试python程序

以下面的程序为例
首先准备好代码
把100个epoch改成1个epoch,因为只是为了调试,至于我为什么不在本地调试,主要是本地的内存不够,跑不动的,所以我干脆在服务器上跑

import os
import torch
from torch.utils.data import DataLoader
import pytorch_lightning as pl
from vis_model import HisToGene
from utils import *
from predict import model_predict, sr_predict
from dataset import ViT_HER2ST, ViT_SKIN
import pdb
pdb.set_trace()

fold = 5
tag = '-htg_her2st_785_32_cv'
dataset = ViT_HER2ST(train=True, fold=fold)
train_loader = DataLoader(dataset, batch_size=1, num_workers=4, shuffle=True)
model = HisToGene(n_layers=8, n_genes=785, learning_rate=1e-5)
trainer = pl.Trainer(gpus=0, max_epochs=1)
trainer.fit(model, train_loader)
print("训练完了")
#trainer.save_checkpoint("model/last_train_"+tag+'_'+str(fold)+".ckpt")

可以看到,我在代码的开头使用了一个pdb.set_trace()
然后使用
在这里插入图片描述就可以进入调试模式了,但是命令行有一个不好的地方就是这个代码不知道跑到哪里去了,这个时候需要借助本地的文件,自己试着理解
命令l可以看到上下部分的代码, 今天有个重大发现,就是这个l的问题,之前我一直不明白这个l只在第一次显示当前代码的位置,如果多几次使用l命令,会发现显示的代码跑到别的地方去了,我想达到的目标是每次我都回到当前代码调试的的正常位置,这个是我想要的

https://stackoverflow.com/questions/5169702/how-do-i-list-the-current-line-in-python-pdb

可以使用的命令是

l .

实例如下
在这里插入图片描述
因此使用这个命令也是可以的,所以在服务器上进行调试也是可以的

此处还有一个很重要的东西就是调试时不能并行的问题,否则就会出问题,因此需要把代码改成

import os
import torch
from torch.utils.data import DataLoader
import pytorch_lightning as pl
from vis_model import HisToGene
from utils import *
from predict import model_predict, sr_predict
from dataset import ViT_HER2ST, ViT_SKIN
import pdb
#pdb.set_trace()

fold = 5
tag = '-htg_her2st_785_32_cv'
dataset = ViT_HER2ST(train=True, fold=fold)
train_loader = DataLoader(dataset, batch_size=1, num_workers=0, shuffle=True)
model = HisToGene(n_layers=8, n_genes=785, learning_rate=1e-5)
trainer = pl.Trainer(gpus=0, max_epochs=1)
#pdb.set_trace()
trainer.fit(model, train_loader)
print("训练完了")
#trainer.save_checkpoint("model/last_train_"+tag+'_'+str(fold)+".ckpt")

num_workers=0记得修改,否则会报错

不仅是这样,这个在pycharm中也会同时出现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值