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

相关推荐
一头生产的驴3 分钟前
java整合itext pdf实现固定模版pdf导出
java·python·pdf
魔都吴所谓4 分钟前
【python】快速实现pdf批量去除指定位置水印
java·python·pdf
YFCodeDream30 分钟前
MLLM技术报告 核心创新一览
python·gpt·aigc
fruge32 分钟前
Visual Studio 2022安装时共享组件、工具、SDK路径无法更改的问题
ide·visual studio
夜幽青玄2 小时前
mybatis-plus调用报 org.springframework.dao.DataIntegrityViolationException 错误处理
开发语言·python·mybatis
这里有鱼汤3 小时前
📊量化实战篇:如何计算RSI指标的“拥挤度指标”?
后端·python
JJJJ_iii3 小时前
【机器学习05】神经网络、模型表示、前向传播、TensorFlow实现
人工智能·pytorch·python·深度学习·神经网络·机器学习·tensorflow
William.csj3 小时前
服务器/Pytorch——对于只调用一次的函数初始化,放在for训练外面和里面的差异
人工智能·pytorch·python
Ingsuifon3 小时前
pytorch踩坑记录
人工智能·pytorch·python
smj2302_796826523 小时前
解决leetcode第3721题最长平衡子数组II
python·算法·leetcode