- python debug过程中碰到的问题随手记录
报错1:ValueError: could not convert string to float: ‘File’
-
在网上没有搜到直接匹配的答案
-
分析发现,这里的报错是要把’File’这个转成float失败,非数字字符转换为float失败
-
然后去检查哪里出现了这个’File’,发现data load读入多个文件的数据时,其中有个文件第一行是File而非数字,而这个文件并不是我想要的,直接删掉
-
当然在网上查到的类似问题有的是多了引号,如’123’,可通过.strip(“’”)把‘’去掉
报错2:TypeError: _ _init_ _() got an unexpected keyword argument ‘ckpt_dir’
-
报错行:logger = torch.utils.tensorboard.SummaryWriter(ckpt_dir=settings.ckpt_dir)
-
该报错是在执行模型训练时碰到,命令:
python main.py --train_data data/sdd/train --ckpt_dir log_sdd
-
检查代码中报错行:
from torch.utils.tensorboard import SummaryWriter logger = SummaryWriter(ckpt_dir=LogFile)
-
查看SummaryWriter函数原型:
torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment='' , purge_step=None, max_queue=10, flush_secs=120, filename_suffix='') # log_dir默认值是 runs/CURRENT_DATETIME_HOSTNAME # 每次运行可设置不同目录如 ‘run/dir1’ ‘run/dir2’,这样就能比较两次运行结果
参数log_dir(string):把事件文件写在该目录下,是一个分级目录
-
SummaryWriter函数举例:
def __init__(self, logdir): try: from torch.utils.tensorboard import SummaryWriter self.writer = SummaryWriter(log_dir=logdir)
-
源码中参数不对导致报错,修改为:
logger = SummaryWriter(log_dir=LogFile) # ckpt_dir -> log_dir
-
其他这类问题报错通常是版本原因,可能高版本支持但低版本无此参数等,比如
got an unexpected keyword argument ‘encoding’
got an unexpected keyword argument ‘serialized_options’
参考文章:
python中raw_input().strip().split()
pytorch的SummaryWriter使用
SummaryWriter方法代码示例
created by shuaixio, 2022.05.28