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

 

序言

  • 记录python使用过程中碰到的一些问题及其解决方法
  • 上一篇:python常见编译问题解决方法_1

1. PermissionError: [Errno 13] Permission denied: ‘/lost+found’

  • 修改前:
  • 修改后(解决):
  • 此外,可能文件夹已被打开,也可能是无权限打开,或者打开一个文件而不是文件夹

2. No module named ‘lark’

  • 报错:ModuleNotFoundError: No module named ‘lark’

  • 解决方法:

    python3 -m pip install lark-parser
    

3. RuntimeError: Tensors must have same number of dimensions: got 3 and 2

  • 报错:有A[2, 16]、B[2, 4]两个tensor变量, 使用torch.cat((A, B), 1)拼接却报错
  • 解决方法:注意到模型输出带梯度,如下截图。如果不需要保留梯度信息,可以在变量变换之前加.detach()或.data调用,分离梯度信息
  • tensor维度合并报错,类似但不是
  • tensor维度合并报错,类似但不是

4. RuntimeError: Can’t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead

  • 同上,在tensor转换为list的过程中碰到

5. RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

  • 报错:需要梯度但是没有梯度信息
  • 报错原因1:这里的loss默认的requires_grad是False,因此在backward()处不会计算梯度,导致出错
  • 报错原因2:就是loss本身没梯度,所以调用loss.backward()后向传播时报错,没梯度的原因可能是loss_function的output没有梯度,注意检查

6. RuntimeError: Trying to backward through the graph a second time, but the saved intermediate results have already beed freed. Specify retain_grad=True when calling .backward() or autograd.grad() the first time.

  • 解决:需要更新的中间结果加.data分离梯度信息

7. RuntimeError: Input and hidden tensors are not at the same device, found input tensor at cuda:0 and hidden tensor at cpu

  • 报错:两个tensor不在同一设备上device

  • 解决:添加.to(Device解决),tensor变量需要保持在同一个设备上

  • 参考:数据、网络、损失函数放到GPU,init放到GPU或者model.to(Device),model初始化时.to(Device)

8. AttributeError: ‘torch.dtype’ object has no attribute ‘type’

  • 报错:使用np.mean(xx)去计算张量xx的均值

  • 解决:np.mean可以操作list和array,但是此处的loss.data类型是torch.tensor, 需要使用torch.mean进行运算,torch.mean得到的结果也是tensor

  • 补充:获取张量的值 tensor.item()

9. ImportError: cannot import name ‘TypeAlias’ from ‘typing_extensions’

  • 或报错:TypeError: Plain typing_extensions.Self is not valid as type argument
  • 原因:以上两个报错都是typing_extensions版本过旧,使用了3.7.4

  • 解决方法:直接升级typing_extensions版本

    conda install typing_extensions=4.10.0	# 或其他版本
    

10. Torch.cuda.is_available()显示GPU Driver过老

  • 报错:The NVIDIA driver on your system is too old, torch.cuda.is_available()=False
  • 分析:GPU Driver版本11.1,并不老,我之前是通过如下命令在conda环境安装torch:

    pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
    
  • 在网上查了这种情况需要重新装一下cuda配套的pytorch版本

  • 原因:不是GPU驱动版本老,而是pytorch版本和cuda版本不匹配

  • 解决方法:重新安装pytorch,如下

    • 在该网站 https://pytorch.org/get-started/previous-versions/ 搜索cuda 11.1

    • 按照该命令重装后torch.cuda.is_available()查询正常

      # CUDA 11.1
      pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
      

 


【参考文章】
[1]. Permission denied解决方案1
[2]. Permission denied解决方案2
[3]. 不保留梯度信息
[4]. 中间变量添加.data分离梯度信息
[5]. .data和.detach()的区别
[6]. pytorch和cuda版本不匹配

created by shuaixio, 2024.03.03

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/717379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 热题 100_接雨水

题解一: 按列求:分别考虑每一列的雨水高度,某列的雨水高度只与其左侧最高墙和右侧最高墙有关,一种情况是该列比左右侧的墙都低,则根据木桶效应该列雨水高度为min(左侧墙高,右侧墙高)-列高,而其余…

智能驾驶及相关零部件摄像头毫米波雷达激光雷达和芯片渗透率

一、总体情况 乘联会数据显示,1月1日至1月28日,全国乘用车厂商新能源车批发销量为56.7万辆,同比增长76%,环比下降38%;国内新能源车市场零售销量为59.6万辆,同比增长92%,环比下降24%。 二、销…

考研总计划(基础篇)

分为数学,专业课,英语三个部分 数学规划表 高数基础:3月初到4月15号 具体实行计划:分为看课日和写题日 看课日:早上10点到12点半看课,19:30到21:30继续看课。 写题日:早上10点到12点半复习前一天的题目&#xff0…

【word】引用文献如何标注右上角

一、在Word文档中引用文献并标注在右上角的具体步骤如下 1、将光标移动到需要添加文献标注的位置: 2、在文档上方的工具栏中选择“引用”选项: 3、点击“插入脚注”或“插入尾注”: ①如果选择的是脚注,则脚注区域会出现在本页的…

多路转接之epoll

常用的三个API: epoll_create(); //例如 int epfd epoll(10);创建一棵有10个结点的红黑树,注意:这个数只是对内核建议的数值,内核参照这个参数去构建epoll_ctrl();//参数2 op可以取值 EPOLL_CTL_ADD/MOD/DELevents:EPOLLIN/…

Professor教诲-学术笔记1

关于指导学生 自己带的学生,要把文章从头到尾检查好了,再发给professor要至少留给professor一周的时间改文章,太迟了不如放弃DDL要在合作中,充分尊重合作者认真对待向别人求推荐信这件事,别人找你推荐也要慎重&#x…

成为大佬之路--linux软件安装使用第000000025篇--linux docker安装mysql

安装 1.拉取镜像 docker pull centos/mysql-57-centos7 2.启动mysql docker run -di --nametensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 centos/mysql-57-centos7

Pyglet图形界面版2048游戏——详尽实现教程(上)

目录 Pyglet图形界面版2048游戏 一、色块展示 二、绘制标题 三、方阵色块 四、界面布局 五、键鼠操作 Pyglet图形界面版2048游戏 一、色块展示 准备好游戏数字的背景颜色,如以下12种: COLOR ((206, 194, 180, 255), (237, 229, 218, 255), (23…

常见Vue原理面试题

1. Vue的响应式原理是什么?请详细说明Object.defineProperty()和Proxy的区别和用法。 响应式原理:Vue中采用了数据劫持的方式,通过Object.defineProperty()函数来监听数据变化,并在数据变化时触发对应的更新函数。 Object.define…

SpringCloud负载均衡源码解析 | 带你从表层一步步剖析Ribbon组件如何实现负载均衡功能

目录 1、负载均衡原理 2、源码分析 2.1、LoadBalanced 2.2、LoadBalancerClient 2.3、RibbonAutoConfiguration 2.4、LoadBalancerAutoConfiguration 2.5、LoadBalancerIntercepor⭐ 2.6、再回LoadBalancerClient 2.7、RibbonLoadBalancerClient 2.7.1、DynamicServe…

OpenCV 4基础篇| OpenCV图像的拼接

目录 1. Numpy (np.hstack,np.vstack)1.1 注意事项1.2 代码示例 2. matplotlib2.1 注意事项2.2 代码示例 3. 扩展示例:多张小图合并成一张大图4. 总结 1. Numpy (np.hstack,np.vstack) 语法结构: retval np.hstack(tup) # 水平…

工作日记:JavaScript fill() 方法

定义 fill() 方法用于将一个固定值替换数组的元素。 语法 array.fill(value, start, end) value:必填。要填充的值 start:可选。开始填充位置 end:可选。结束填充位置(默认是数组的长度:array.length)…

提取拼多多店铺商家电话的爬虫软件

拼多多是中国知名的团购电商平台,许多用户在购物时都希望能够直接联系到店铺商家,以便获得更多的产品信息或解决问题。在这篇文章中,我们将介绍如何使用Python编写一个爬虫软件,来提取拼多多店铺商家电话。 首先,我们…

c++之通讯录管理系统

1,系统需求 通讯录是一个记录亲人,好友信息的工具 系统中需要实现的功能如下: 1,添加联系人:向通讯录中添加新人,信息包括(姓名,性别,年龄,联系电话&#…

构建高效的接口自动化测试框架思路

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。今…

IntelliJ IDEA 的常用快捷键

IntelliJ IDEA 的常用快捷键非常多,这些快捷键可以帮助你更高效地编写代码。以下是一些常用的快捷键总结: 基础操作 CtrlN:查找类CtrlShiftN:查找文件CtrlAltL:格式化代码AltInsert:生成代码(…

信息安全技术第1章——信息网络安全基本概念

课程介绍 网络信息安全是医学信息工程专业的限选课。主要围绕计算机网络安全所涉及的主要问题进行讲解,内容包括:对称密码与公钥密码的基本原理、相关算法及应用。电子邮件的安全,IP安全,Web安全,恶意软件及防火墙等内…

UI自动化-(web端窗口截图文件上传-实操入门)

1、窗口截图 1. UI自动化中,为什么需要进行窗口截图? 调试和故障排除:截图可以直观地查看界面的状态,快速识别和解决问题。当自动化过程中出现错误或异常时,通过查看截图可以确定是否是界面元素的问题,例…

C++ opencv 学习

文章目录 1、创建窗口2、读取图片3、视频采集4、Mat的使用5、异或操作6、通道分离,通道合并7、色彩空间转换8、最大值、最小值9、绘制图像10、多边形绘制11、随机数12、鼠标实时绘制矩形13、归一化14、resize操作15、旋转翻转16、视频操作17、模糊操作18、高斯模糊操…

SpringBoot整合MyBatis实现增删改查

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合MyBatis实现增删改查 📚个人知识库: Leo知识库,欢迎大家访…