将二维数组变成三维(C,H,W)格式,输入pytorch中

我们经常会把图像的一些像素值读取出来进行操作,保存在.npy文件或者h5文件中,这样,我们的数据就是一个二维的数据,例如是(512*512).那么我们想要给它增加一个维度变成(1,512,512),怎么操作呢?

如果保存的是像素值需要进行np.asarray()操作 

import h5py

# 定义文件路径
file_path = '/kaggle/input/h5py-mr/train/BAI_SU_PING_40100000_0008_0008_7.h5'

# 打开HDF5文件
with h5py.File(file_path, 'r') as hf:
    # 读取LOW_ENERGY数据集
    low_energy_data = hf['LOW_ENERGY'][:]  # 这里[:]将数据加载到numpy数组中
    label=hf['label'][()] 


# 现在low_energy_data中存储了LOW_ENERGY数据集的值,你可以对它进行操作或查看它的内容
print(low_energy_data.shape,label)

## 读取一张图片,并对其进行可视化
im = low_energy_data
imarray = np.asarray(im) / 255.0
plt.figure()
plt.imshow(imarray,cmap='gray')
plt.show()

 这里举个例子生成一个(512,512)的数组:

import numpy as np

# 生成随机512x512的数组
imarray = np.random.rand(512, 512)#假如这是我们的数据
imarray.shape

#输出结果为(512,512)

 这时候我们把它变成(1,512,512)或者(3,512,512)

# 将图像数组的形状变为 (1, 512, 512)
img_ = np.expand_dims(imarray, axis=0)
print(img_.shape)
# 将形状为 (1,512, 512) 的数组变为 (3, 512, 512),三个通道一样
img_3_channels = np.repeat(img_, 3, axis=0)

# 确认新形状
print(img_3_channels.shape)

#输出结果为(1, 512, 5120)  (3, 512, 512)

 这样就变成了(C,H,W)格式了,可以传入到深度学习的模型中了,

data_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize([0.485], [0.229])  # 假设你的数据只有一个通道,因此使用单个值进行归一化
])


# [C, H, W]
img_tensor = data_transform(img_3_channels )

然后就可以传入到深度学习pytorch中啦

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值