You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

torchvision make_grid仅显示顶部图像问题求助

问题描述

使用torchvision的make_grid方法时,仅能显示张量decoded_samples的顶部图像,但已确认该张量内所有元素的值均不相同。单独传入单张图像(例如make_grid(decoded_samples[3]))时,图像可以正常显示。

相关代码:

samples = torch.randn(64, 32).to(device)
decoded_samples = model.decoder(samples).view(64,1,28,28)
fig = plt.figure(figsize = (10, 10))   
ax1 = plt.subplot(111)
ax1.imshow(torchvision.utils.make_grid(decoded_samples[:16], nrow=4, pad_value=1.)\
                .data.cpu().numpy().transpose(1, 2, 0), cmap='gray')
plt.show()

效果截图:
make_grid仅显示顶部图像效果

问题原因与解决方法
  • 核心原因:图像数据取值范围不匹配
    make_grid默认不会对输入张量做全局归一化,而plt.imshow处理多通道拼接图时,会自动将整个图像数组的像素值拉伸到[0,1]区间显示。如果decoded_samples中大部分图像的像素值集中在小范围,仅顶部图像的像素值跨度较大,就会导致其他图像被压缩到接近黑色(或白色),肉眼几乎不可见。而单独显示单张图时,imshow会基于单张图的像素值范围做拉伸,因此能正常显示。

  • 解决方法

    1. 手动归一化到[0,1]区间
      在调用make_grid前,先将decoded_samples的所有像素值归一化到0到1之间,确保所有图像的亮度范围统一:
      samples = torch.randn(64, 32).to(device)
      decoded_samples = model.decoder(samples).view(64,1,28,28)
      # 全局归一化到[0,1]
      decoded_samples = (decoded_samples - decoded_samples.min()) / (decoded_samples.max() - decoded_samples.min())
      fig = plt.figure(figsize = (10, 10))   
      ax1 = plt.subplot(111)
      grid = torchvision.utils.make_grid(decoded_samples[:16], nrow=4, pad_value=1.)
      ax1.imshow(grid.data.cpu().numpy().transpose(1, 2, 0), cmap='gray')
      plt.show()
      
    2. 指定imshow的取值范围
      若不想修改原始张量,可以在imshow中通过vmin和vmax强制使用decoded_samples的全局最小/最大值作为显示范围:
      samples = torch.randn(64, 32).to(device)
      decoded_samples = model.decoder(samples).view(64,1,28,28)
      fig = plt.figure(figsize = (10, 10))   
      ax1 = plt.subplot(111)
      grid = torchvision.utils.make_grid(decoded_samples[:16], nrow=4, pad_value=1.)
      grid_np = grid.data.cpu().numpy().transpose(1, 2, 0)
      ax1.imshow(grid_np, cmap='gray', vmin=decoded_samples.min().item(), vmax=decoded_samples.max().item())
      plt.show()
      

内容的提问来源于stack exchange,提问作者akore128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:47:40