如何显示dataloader中tensor类型的图片数据

由于需要查看dataloader中的图片,使用常规的显示方法会出现图片显示错误的情况,情况简述如下:
错误的显示代码:

    plt.figure()
    img_tensor = data_test[0,:,:,:].view(3,32,32)
    img = img_tensor.detach().numpy()  # 数据类型的转换
    img_trans = img.transpose(1,2,0)
    plt.imshow(img_trans)

其中data_test为:
在这里插入图片描述
其显示结果为:
在这里插入图片描述
很明显显示错误,简单分析应该是三维的tensor数据在读取时和我预想的不大一样。
经过测试,原因应该是数据在经过dataloader时其数据值进行了归一化与标准化,导致很多数据未负数,而负数在显示时直接显示为了黑色
因此对dataloader中提取的数据首先进行归一化,归一化至0-1的范围内,再进行显示
更改后的代码如下:

    # 显示待测的图片是什么
    plt.figure()
    # img_tensor = data_test[0,:,:,:].view(3,32,32)
    img_tensor = data_test[0, :, :, :]
    img = img_tensor.detach().numpy()  # 数据类型的转换
    # img_squ = np.squeeze(img, 0)
    # 每个通道对数据进行归一化
    for i in range(3):
        img[i,:,:] = feature_map_normalization(img[i,:,:])
    img_trans = img.transpose(1,2,0)
    plt.imshow(img_trans)

其中的feature_map_normalization如下:

def feature_map_normalization(data):
    min_max_scaler = preprocessing.MinMaxScaler()
    X_minMax = min_max_scaler.fit_transform(data)
    return X_minMax

显示结果如下
在这里插入图片描述
可以基本看出是一只狗

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值