pytorch-将图片转成可训练的张量

import os

创建一个多图像的数据集作为神经网络的输入,以3为例,以获得一个N*C*H*W,预先分配一个适当大小的张量,并使用从目录中加载的图像填充它。

batch_size=3
batch=torch.zeros(batch_size,3,256,256,dtype=torch.uint8)
data_dir='E:/PyTorch_Book_Code/dlwpt-code-master/data/p1ch4/image-cats/'
filenames=[name for name in os.listdir(data_dir)
          if os.path.splitext(name)[-1]=='.png']
for i,filename in enumerate(filenames):
    img_arr=imageio.imread(os.path.join(data_dir,filename))
    img_t=torch.from_numpy(img_arr)
    img_t=img_t.permute(2,0,1)
    img_t=img_t[:3]
    batch[i]=img_t
    print(batch[i])

神经网络通常使用浮点数张量作为输入,当输入数据的范围为0~1或-1~1时,神经网络表现出最佳的训练性能。
因此需将张量转换为浮点数并进行归一化。

batch=batch.float()
batch/=255.0

正规化的另一种方法是计算输入数据的均值和标准差,并对其进行缩放,使每个通道的均值为0,标准差为1.

n_channels = batch.shape[1]
for c in range(n_channels):
    mean = torch.mean(batch[:, c]) #求第C维度的平均数
    std = torch.std(batch[:, c])#求第C维度的标准差
    batch[:, c] = (batch[:, c] - mean) / std#标准化

filenames=[name for name in os.listdir(data_dir)
          if os.path.splitext(name )]
python在方括号[]中使用for循环的两种方式,列表解析List Comprehensions,类似[0 for i in range(10)]
两种语法:

[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]
举例说明:https://blog.csdn.net/qq_36414085/article/details/103685651

os.path.splitext("文件路径名")
用法:分离文件名和扩展名
if os.path.splitext(name)[-1]=='.png'  :如果name的最后一位是'.png'

os.listdir(data_dir):返回指定的文件夹或文件的名字的列表。

enumerate()遍历一个集合对象,遍历的同时,还可以得到当前元素的索引位置。

imageio.imread("文件路径"):将图片读成张量。

os.path.join():用于文件路径连接

torch.from_numpy(ndarray):从numpy数组创建一个张量,数组和张量共享相同内存。

permute(2,0,1):交换维度

[:]和[:,]的用法:(23条消息) Python中列表索引 A[ : 2 ]与A[ : , 2]的区别_liuyhoo的博客-CSDN博客_python[2:]什么意思icon-default.png?t=M3K6https://blog.csdn.net/liuyhoo/article/details/80789715

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值