深層学習画像処理 - データ読み込み

1つのデータ反復子

1.1 列挙()

for n, (x, _) in enumerate(train_loader):
	x = x.to(device)

この関数は、train_loader 配列を走査しながらインデックスを返すことができます。例:

data = [(1, 3), (2, 1), (3, 3)]
1. 直接遍历数组,返回数组里的值。
for x, y in data:
    print(x,y)
# 1 3
# 2 1
# 3 3

2. 使用迭代器,同时返回下标。(这里data是一个多元数组,所以在迭代的时候,我们需要注意要将index和value区分开。)
for i, (x, y) in enumerate(data):
    print(i, x, y)

# 0 1 3
# 1 2 1
# 2 3 3

1.2 zip()

    for (x, _), (y, _) in zip(train1_loader, train2_loader):
        x, y = x.to(device), y.to(device)

2 つの配列を走査しながらの複数オブジェクトの反復。例:

names = ['xiaoming', 'xiaohua', 'xiaohei', 'xiaoli']
jobs = ['coach', 'student', 'student', 'student', 'professor']

for name, job in zip(names, jobs):
  print(name, job)

# xiaoming coach
# xiaohua student
# xiaohei student
# xiaoli student

上記の例では、名前とジョブの長さが実際には一致していないことに注意してください。zip を使用すると、短い方に応じて自動的に切り詰められます。切り詰めたくない場合は、zip の代わりに itertools で zip_longest を使用することもできます。

2 データの読み取り

2.1 パス-opencv-Tensor

img_path = './Images/1.jpg'
img = cv2.imread(img_path)

print(img.shape)  # (H,W,3)
print(img.size)  # (H,W,3)
tran = transforms.ToTensor()  # 将numpy数组或PIL.Image读的图片转换成(C,H, W)的Tensor格式且/255归一化到[0,1.0]之间
img_tensor = tran(img)
print(img_tensor.size())  # (C,H, W), 通道顺序(B,G,R)


'''
(256, 256, 3)
196608
torch.Size([3, 256, 256])
'''

2.2 テンソルと 1 次元のバッチサイズ


image = torch.unsqueeze(img_tensor, 0)
print(image.size())		# torch.Size([1, 3, 256, 256])

Guess you like

Origin blog.csdn.net/everyxing1007/article/details/126867931