MAML深度学习实践与理解

发布时间:2025-05-02 17:42

学习技巧20:将理论与实践相结合,深化理解 #生活技巧# #学习技巧# #终身学习态度#

 

接触MAML半年了,在把这个传说中的神奇框架给改得不成样子之后,又回到了原点。从完全没接触过tensorflow和未知深度学习神经网络为何物之时到倒腾实验半年的经历,让我渐渐领会到MAML的一些思想。学习之路坎坷,暂且以简单笔记记之。以下从数据集、代码、网络结构三个层次作了介绍。

MiniImageNet数据集

就从跟我实验有关的miniImagenet(下载)的5分类说起。这个数据集下载下来是一个100×600的数据集,即含有100类花鸟虫自然与生活中物品的集合,每类有600张图片。这些样本也就是类似这样的:

这里列举的样本大小是统一的,原始样本大小不一定一样大,但是数据经过分类(根据图片名称已标注类别),同时将大小统一至84×84,并划分为train,val,test数据集。

CODE

接下来就是代码中处理的一些方式。

第一部分    抽取样本作为训练和验证数据

def make_data_tensor(self, train=True):

if train:

#train目录下的所有分好类的样本的文件目录

folders = self.metatrain_character_folders

# number of tasks, not number of meta-iterations. (divide by metabatch size to measure)

#放进队列样本的批次数,验证数据批次有所不同。因miniImagenet训练验证数据量差别。 train有64类,val有16类,test有20类。

num_total_batches = 20000 #200000

else:

folders = self.metaval_character_folders

num_total_batches = 600

# make list of files

# print('Generating filenames:',folders)

print('Generating filenames')

all_filenames = []

all_labels = []

#从这里开始循环取出所有批次样本,每个批次样本类别随机(tain即64选5依次类推)

for _ in range(num_total_batches):

#随机选择num_classes类

sampled_character_folders = random.sample(folders, self.num_classes)

#打乱类别顺序

random.shuffle(sampled_character_folders)

#这里取出的样本实际是num_classes类,每类有self.num_samples_per_class个样本,最终是顺序按类连续排列的样本路径的列表

labels_and_images = get_images(sampled_character_folders, range(self.num_classes), nb_samples=self.num_samples_per_class, shuffle=False)

# make sure the above isn't randomized order

#样本路径列表

filenames = [li[1] for li in labels_and_images]

#样本标签列表,由于每个批次所取样本对应的标签都是一样的,所以后面队列中每次取出样本的标签只需要用到lables而不必用到all_labels(自行添加)

labels = [li[0] for li in labels_and_images]

all_filenames.extend(filenames)

all_labels.extend(filenames)

# make queue for tensorflow to read from

#这就是存放样本路径的队列,也就是说先把所有样本对应路径放进队列,只有在训练开始的时候才会根据队列去读出样本数据,这也是tensorflow图计算机制,先构建结点,等到需要计算某结点时才会依次根据结点间关系去一一计算出结果。

filename_queue = tf.train.string_input_producer(tf.convert_to_tensor(all_filenames), shuffle=False)

print('Generating image processing ops',len(list(set(all_filenames))))

image_reader = tf.WholeFileReader()

_, image_file = image_reader.read(filename_queue)

if FLAGS.datasource == 'miniimagenet':

#对于每个读出的样本所做的处理,解码、向量化(行向量)、归一化

image = tf.image.decode_jpeg(image_file, channels=3)

image.set_shape((self.img_size[0],self.img_size[1],3))

image = tf.reshape(image,

网址:MAML深度学习实践与理解 https://www.yuejiaxmz.com/news/view/911763

相关内容

【机器学习】深度神经网络(DNN):原理、应用与代码实践
Python深度学习实践:深度学习在虚拟助理中的应用
自制高中物理教具促进深度学习的实践研究
【深度学习】深度学习语音识别算法的详细解析
跨学科学习方法论与实践.docx
高效学习方法分享:提升学习效率与深度的实用技巧
高中语文深度阅读的探索与实践
深度学习之
幼儿学习辅导策略与实践.docx
深度学习理念下古诗词教学探析

随便看看