如题,神经网络通常使用浮点数张量作为输入,我们要做的第一件事情就是将图片转化为浮点数,并且做归一化操作。
import torch
import imageio
import osdata_dir='F:\\work\\deep_learning\\pytorch\\dlwpt-code-master\\data\\p1ch4\\image-cats'
print(data_dir)
file_names=[name for name in os.listdir(data_dir) ] #if os.path.splitext(name)[-1]=='png'batch_size=3
batch=torch.zeros(batch_size,3,256,256,dtype=torch.uint8)for i ,file_name in enumerate(file_names):img_arr=imageio.imread(os.path.join(data_dir,file_name))img_t=torch.from_numpy(img_arr)img_t=img_t.permute(2,0,1)img_t=img_t[:3]batch[i]=img_t#获取通道数量
n_channels=batch.shape[1]#print(n_channels)#一般为3#将图片转为float类型
batch=batch.float()for c in range(n_channels):print(batch[:,c].shape)#对3张图片所有的c通道求平均值和方差mean=torch.mean(batch[:,c])std=torch.std(batch[:,c])batch[:,c]=(batch[:,c]-mean)/stdprint(mean)print(std)print(batch.shape)print(batch)
结果如下:
torch.Size([3, 256, 256])
tensor(147.8829)
tensor(56.4011)
torch.Size([3, 256, 256])
tensor(114.5765)
tensor(52.7250)
torch.Size([3, 256, 256])
tensor(90.6373)
tensor(49.2352)torch.Size([3, 3, 256, 256])