使用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时遇到张量显示不全、不方便查看数值的问题

相关推荐
橡晟4 小时前
深度学习入门:让神经网络变得“深不可测“⚡(二)
人工智能·python·深度学习·机器学习·计算机视觉
墨尘游子4 小时前
神经网络的层与块
人工智能·python·深度学习·机器学习
倔强青铜35 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
企鹅与蟒蛇5 小时前
Ubuntu-25.04 Wayland桌面环境安装Anaconda3之后无法启动anaconda-navigator问题解决
linux·运维·python·ubuntu·anaconda
autobaba5 小时前
编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
chrome·python·selenium·rpa
Rvelamen6 小时前
LLM-SECURITY-PROMPTS大模型提示词攻击测评基准
人工智能·python·安全
【本人】7 小时前
Django基础(一)———创建与启动
后端·python·django
SHIPKING3938 小时前
【python】基于pygame实现动态粒子爱心
开发语言·python·pygame
kk_stoper9 小时前
如何通过API查询实时能源期货价格
java·开发语言·javascript·数据结构·python·能源
java1234_小锋9 小时前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 架构搭建
python·自然语言处理·flask