【python debug】python常见编译问题解决方法_1

 

1. ValueError: could not convert string to float: ‘File’

  • 问题原因:这里的报错是要把’File’这个转成float失败,非数字字符转换为float失败
  • 解决方法:然后去检查哪里出现了这个’File’,data load读入多个文件的数据,其中有个文件第一行是File而非数字,而这个文件并不是我想要的,直接删掉

2. TypeError: init() got an unexpected keyword argument ‘ckpt_dir’

  • 报错:logger = torch.utils.tensorboard.SummaryWriter(ckpt_dir=settings.ckpt_dir)

  • 该报错是在执行模型训练时碰到,代码中报错行:logger = SummaryWriter(log_dir=settings.ckpt_dir)

  • 问题原因:这类问题报错通常是tensorboard版本原因,可能高版本支持但低版本无此参数

  • 解决方法:使用conda install安装新版tensorboard

    conda install -c conda-forge tensorboard
    
  • 补充:

    • 查看SummaryWriter函数原型
      torch.utils.tensorboard.writer.SummaryWriter(log_dir=None, comment=''
      , purge_step=None, max_queue=10, flush_secs=120, filename_suffix='')
      
    • 参数log_dir(string):把事件文件写在该目录下,是一个分级目录。默认值是 runs/CURRENT_DATETIME_HOSTNAME
    • 每次运行可设置不同目录如 ‘run/dir1’ ‘run/dir2’,这样就能比较两次运行结果。举例:
      def __init__(self, logdir):
          try:
              from torch.utils.tensorboard import SummaryWriter
              self.writer = SummaryWriter(log_dir=logdir)
      

3. AttributeError: ‘list’ object has no attribute ‘shape’

  • 报错

  • 问题原因:np.array可使用 shape;而对于列表list,却不能使用shape来查看列表的维度

  • 解决方法:np.array(list)转换后使用

  • 类似的报错:list indices must be integers or slices, not tuple

4. ImportError: cannot import xxx from partially initialized module ‘xxxx’ (most likely due to a circular import)

  • 可能原因
    • (1)导入的函数与标准库重名了
    • (2) 两个模块循环引用了,需要去除循环依赖
    • (3) 导入整个模块而不是导入模块函数

5. RuntimeError: expected scalar type Double but found Float

  • 报错

  • 问题原因:tensor的数据类型不对

  • 解决方法

    x=x.to(torch.float32)
    labels = labels.long()
    

 


【参考文章】
circular import问题解方案
列表取片操作易错点
tensorboard.writer.SummaryWriter
tensorboard版本问题
tensorboard.writer.SummaryWriter方法示例

你可能感兴趣的:(Python,python,debug,Error,python报错解决)