使用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_2017385755[0] 所示。([0]就表示第一层矩阵
  1. 如果我们想要显示第 4 层矩阵中的数值,可以在 Expression 处输入 np.array(inp_voxel[3].data.cpu()) ,然后点击 Evaluate...View as Array 就可以完全显示张量 inp_voxel 第 4 层矩阵中的数值了。其实这里的 inp_voxel[3] 就是通过索引操作来获取张量 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时遇到张量显示不全、不方便查看数值的问题

相关推荐
工业互联网专业26 分钟前
基于django+vue的健身房管理系统-vue
vue.js·python·django·毕业设计·源码·课程设计·健身房管理系统
aischang43 分钟前
统信桌面专业版如何使用python开发平台jupyter
开发语言·python·jupyter·统信uos
红鼻子时代1 小时前
Django RBAC项目后端实战 - 03 DRF权限控制实现
后端·python·django·rabc
敲键盘的小夜猫1 小时前
大模型链路调试平台之LangSmith实战指南
python·langchain
狐凄1 小时前
Python实例题:Python计算概率论
开发语言·python·概率论
Y3174291 小时前
python Day46 学习(日志Day15复习)
python·学习·机器学习
这里有鱼汤1 小时前
一文读懂量化交易中最常用的5种均线,附源码,建议收藏
后端·python
学不会就看1 小时前
selenium学习实战【Python爬虫】
python·学习·selenium
q567315231 小时前
分布式增量爬虫实现方案
开发语言·分布式·爬虫·python
勤奋的知更鸟2 小时前
LLaMA-Factory和python版本的兼容性问题解决
开发语言·python·llama-factory