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

相关推荐
冷雨夜中漫步5 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
Howrun7775 小时前
VSCode烦人的远程交互UI讲解
ide·vue.js·vscode
郝学胜-神的一滴6 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再6 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
Ashley的成长之路6 小时前
2025 年最新:VSCode 中提升 React 开发效率的必备插件大全
ide·vscode·react.js·工作提效·react扩展
m0_555762906 小时前
VSCODE CLAUDE CODE
ide·vscode·编辑器
喵手7 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934737 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy8 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威9 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos