使用pycharm调试程序——完全显示张量的数值

  我在使用PyCharm调试程序时,发现有些张量因为shape过大(数据量太多),导致该张量中的数值无法完全显示。下面就简单介绍怎样完全显示张量中的数值。

  1. 假设某个张量 inp_voxel 的 shape 为 torch.Size(5, 128, 128),如下图所示。
  1. 首先我们需要选中张量 inp_voxel ,然后单击鼠标右键 会出现如下图所示的条目,接着鼠标左键单击 Evaluate Expression
  1. 在弹出的对话框 Expression 处删除原有的内容,接着输入 np.array(inp_voxel.data.cpu()),然后点击对话框中的 Evaluate
  1. 在弹出的对话框中点击 ...View as Array 就可以完全显示张量 inp_voxel 中的数值了。
  1. 张量 inp_voxel 的 shape 为 torch.Size(5, 128, 128) ,即该张量由 5 个大小为 128×128 的矩阵组成。通过上面的代码 np.array(inp_voxel.data.cpu())只能显示第 1 个大小 128×128 的矩阵。通俗地讲,可以把张量 inp_voxel 看成由 5 层 大小为128×128 的矩阵组成,而代码 np.array(inp_voxel.data.cpu())只显示第 1 层矩阵中的数值,如下图中的 __py_debug_temp_var_20173857550 所示。(0就表示第一层矩阵
  1. 如果我们想要显示第 4 层矩阵中的数值,可以在 Expression 处输入 np.array(inp_voxel[3].data.cpu()) ,然后点击 Evaluate...View as Array 就可以完全显示张量 inp_voxel 第 4 层矩阵中的数值了。其实这里的 inp_voxel3 就是通过索引操作来获取张量 inp_voxel 第 4 层矩阵中的数据,接着转为numpy数组。
  1. 扩展:我觉得上面操作的核心思想:就是将张量(tensor)转为numpy数组(ndarray)来进行完全显示 。其实,我们不一定非得在 Expression 处输入表达式 np.array(inp_voxel.data.cpu()),我们还可以输入表达式 inp_voxel.numpy()来进行转换,然后点击 Evaluate 即可。只要用合适的正确地语法将张量(tensor)转为numpy数组(ndarray)即可!!!!!!!

参考:
pycharm中evaluate expression的用法
个人笔记(4)PyCharm在进行debug时遇到张量显示不全、不方便查看数值的问题

相关推荐
汤姆小白20 小时前
01-环境搭建与项目导览
人工智能·python·机器学习·numpy
向日的葵0061 天前
langchain的Tools教程(三)
python·langchain·tools
言乐61 天前
Python实现可运行解密游戏游戏框架
python·游戏·小程序·游戏程序·关卡设计
YUS云生1 天前
Python学习笔记·第31天:FastAPI入门——路由、路径参数、查询参数与请求体
笔记·python·学习
智写-AI1 天前
真实有效的免费降英文AI工具服务商
人工智能·python
yuhuofei20211 天前
【Python入门】了解掌握Python中函数的基本使用
python
白帽小阳1 天前
2026前端面试题!(附答案及解析)
javascript·网络·python·安全·web安全·网络安全·护网行动
love530love1 天前
将 ChatCut MCP 插件从 Codex 桌面应用移植到 WorkBuddy —— 完整适配实录
ide·人工智能·windows·视频剪辑·ai agent
乱写代码1 天前
Python开发技巧--类型注解Literal
python