few-shot learning的采样
Few-shot learning 基于任务对模型进行训练,在N-way-K-shot中,一个任务中的meta-training中含有N类,每一类抽取K个样本构成support set, query set则是在刚才抽取的N类剩余的样本中sample一定数量的样本(可以是均匀采样,也可以是不均匀采样)。
对数据按类标归类
针对上述情况,我们需要使用不同类别放置在不同文件夹的数据集。但有时,数据并没有按类放置,这时就需要对数据进行处理。下面以CIFAR100为列(不含N-way-k-shot的采样):
import os
from skimage import io
import torchvision as tv
import numpy as np
import torch
def Cifar100(root):
character = [[] for i in range(100)]
train_set = tv.datasets.CIFAR100(root, train=True, download=True)
test_set = tv.datasets.CIFAR100(root, train=False, download=True)
dataset = []
for (X, Y) in zip(train_set.train_data, train_set.train_labels): # 将train_set的数据和label读入列表
dataset.append(list((X, Y)))
for (X, Y) in zip(test_set.test_data, test_set.test_labels): # 将test_set的数据和label读入列表
dataset.append(list((X, Y)))
for X, Y in dataset: