epoch

Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解(转载)

﹥>﹥吖頭↗ 提交于 2020-04-27 14:10:48
转载于: Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解 MAML在学术界已经是非常重要的模型了,论文Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks自2017年发表至今已经收获了400+的引用。由于当前网上关于MAML的中文介绍少之又少,可能很多小伙伴对其还不是特别理解。所以今天我整理了这段时间来的学习心得,与大家分享自己对MAML的认识与理解。MAML可以用于Supervised Regression and Classification以及Reinforcement Learning。由于我对强化学习不是特别了解,因此这篇文章,均是基于MAML在Supervised Regression and Classification中的运用。 一、一些相关概念的介绍 在原论文中,作者直接引用了许多元学习相关的概念,例如 meta-learning, model-agnostic, N-way K-shot, tasks等等,其中有些概念在MAML中还有特殊的含义。在此,我尽量用通俗易懂的方式对这些概念为大家做一个介绍。 (1) meta-learning meta-learning即元学习,也可以称为“learning to learn”。常见的深度学习模型

百度PaddlePaddle入门-9(建模)

回眸只為那壹抹淺笑 提交于 2020-04-27 10:07:09
本节介绍使用飞桨快速实现“手写数字识别”的建模方法。 与“房价预测”的案例类似,我们以同样的标准结构实现“手写数字识别”的建模。在后续的课程中,该标准结构会反复出现,逐渐加深我们对深度学习模型的理解。深度学习模型的标准结构分如下五个步骤: 数据处理 :读取数据和预处理操作。 模型设计 :搭建神经网络结构。 训练配置 :配置优化器、学习率、训练参数。 训练过程 :循环调用训练过程,循环执行“前向计算 + 损失函数 + 反向传播”。 保存模型并测试 :将训练好的模型保存并评估测试。 下面我们使用飞桨框架,按照五个步骤写“手写数字识别”模型,体会下使用飞桨框架的感觉。 在数据处理前,首先要加载飞桨平台、与“手写数字识别”模型相关类库,代码如下: 1 # 加载飞桨和相关类库 2 import paddle 3 import paddle.fluid as fluid 4 from paddle.fluid.dygraph.nn import FC 5 import numpy as np 6 import os 7 from PIL import Image 1. 数据处理 飞桨提供了多个封装好的数据集API,覆盖计算机视觉、自然语言处理、推荐系统等多个领域,可以帮助我们快速完成机器学习任务。比如,在“手写数字识别”模型中,我们可以通过调用 paddle.dataset.mnist

JVM总结-synchronized

杀马特。学长 韩版系。学妹 提交于 2020-04-26 22:50:42
在 Java 程序中,我们可以利用 synchronized 关键字来对程序进行加锁。它既可以用来声明一个 synchronized 代码块,也可以直接标记静态方法或者实例方法。 synchronized是利用锁(对象锁,类锁)的机制来实现同步的。 锁机制有如下两种特性: 互斥性: 即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的 原子性 。 可见性: 必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致。 Synchronized原理分析 线程堆栈分析(互斥) Jconsole 当声明 synchronized 代码块时,编译而成的字节码将包含 monitorenter 和 monitorexit 指令。这两种指令均会消耗操作数栈上的一个引用类型的元素(也就是 synchronized 关键字括号里的引用),作为所要加锁解锁的锁对象。 public void foo(Object lock) { synchronized (lock) { lock.hashCode(); } } // 上面的 Java 代码将编译为下面的字节码

【转载】 Pytorch 细节记录

泪湿孤枕 提交于 2020-04-26 18:50:38
原文地址: https://www.cnblogs.com/king-lps/p/8570021.html -------------------------------------------------------------------------------------- 1. PyTorch进行训练和测试时指定实例化的model模式为:train/eval eg: class VAE(nn.Module): def __init__ (self): super(VAE, self). __init__ () ... def reparameterize(self, mu, logvar): if self.training: std = logvar.mul(0.5 ).exp_() eps = Variable(std.data.new(std.size()).normal_()) return eps.mul(std).add_(mu) else : return mu model = VAE() ... def train(epoch): model.train() ... def test(epoch): model.eval() eval即evaluation模式,train即训练模式。仅仅当模型中有 Dropout 和 BatchNorm 是才会有影响

【pytorch】Learning Rate Policy Function

扶醉桌前 提交于 2020-04-26 17:44:01
1.lr_scheduler.StepLR class torch.optim.lr_scheduler. StepLR (optimizer, step_size, gamma=0.1, last_epoch=-1) 功能: 等间隔调整学习率,调整倍数为gamma倍,调整间隔为step_size 。间隔单位是step。需要注意的是,step通常是指epoch,不要弄成iteration了。 参数: step_size(int)- 学习率下降间隔数,若为30,则会在30、60、90......个step时,将学习率调整为lr*gamma。 gamma(float)- 学习率调整倍数 ,默认为0.1倍,即下降10倍。 last_epoch(int)- 上一个epoch数,这个变量用来指示学习率是否需要调整。当last_epoch符合设定的间隔时,就会对学习率进行调整。当为-1时,学习率设置为初始值。 2.lr_scheduler.MultiStepLR class torch.optim.lr_scheduler. MultiStepLR (optimizer, milestones, gamma=0.1, last_epoch=-1) 功能: 按 设定的间隔调整学习率。这个方法适合后期调试使用,观察loss曲线,为每个实验定制学习率调整时机 。 参数: milestones

基于LSTM的语言模型实现

独自空忆成欢 提交于 2020-04-26 15:30:17
语言模型 简介 1. 任务说明 本文主要介绍基于lstm的语言的模型的实现,给定一个输入词序列(中文分词、英文tokenize),计算其ppl(语言模型困惑度,用户表示句子的流利程度),基于循环神经网络语言模型的介绍可以 参阅论文 。相对于传统的方法,基于循环神经网络的方法能够更好的解决稀疏词的问题。 2. 效果说明 在small meidum large三个不同配置情况的ppl对比: small config train valid test paddle 40.962 118.111 112.617 tensorflow 40.492 118.329 113.788 medium config train valid test paddle 45.620 87.398 83.682 tensorflow 45.594 87.363 84.015 large config train valid test paddle 37.221 82.358 78.137 tensorflow 38.342 82.311 78.121 3. 数据集 此任务的数据集合是采用ptb dataset,下载地址为: http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz 快速开始 1. 开始第一次模型调用 训练或fine-tune

14 Java虚拟机实现 synchronized

旧时模样 提交于 2020-04-25 04:34:20
java 中的 synchronized 运行 在 Java 中,我们经常用 synchronized 关键字对程序进行加锁。无论是一个代码块还是静态方法或者实例方法,都可以直接用 synchronized 声明。 当声明 synchronized 代码块时,编译的字节码将包含 monitorenter 和 monitorexit 指令。这两种指令均会消耗操作数栈上的一个引用类型的元素,作为所要加锁解锁的锁对象。 public void foo(Object lock) { synchronized (lock) { lock.hashCode(); } } // 上面的 Java 代码将编译为下面的字节码 public void foo(java.lang.Object); Code: 0: aload_1 1: dup 2: astore_2 3: monitorenter 4: aload_1 5: invokevirtual java/lang/Object.hashCode:()I 8: pop 9: aload_2 10: monitorexit 11: goto 19 14: astore_3 15: aload_2 16: monitorexit 17: aload_3 18: athrow 19: return Exception table: from to

colab找不到模块 no name

喜欢而已 提交于 2020-04-25 01:52:49
https://www.jianshu.com/p/2cf00bb9db34?utm_source=oschina-app 穷学生学习神经网络一定体会过 “等待”的痛苦 。。。 循环一次epoch急死人,但是有几十个上百个循环等着你! 你盯着屏幕看着进度条像蜗牛一样推进,真是恨铁不成钢,心想等日后发达了一定要买一台好电脑... 只能先干干其他的事儿,但是心里又不放心,总是会来看,结果还是没训练完,算了,正事儿是干不了了,刷刷手机吧~ ... ...(半小时过去) 终于训练完啦!看看结果: woc...@#$& &* *& 苦逼地重新训练一次....o(╥﹏╥)o 前几天看网上说Google推出了免费的GPU专门给机器学习的穷孩子们用!顿时让我激动了起来,马上去试用了一下。(哦,自备梯子...) 参考教程: Google Colab Free GPU Tutorial 薅资本主义羊毛,用Google免费GPU 但是因为自己的项目跟教程中的不太一样,有一些细节没有说清楚,查了很多资料终于解决,决定这里把我自己的使用过程记录下来: Google Colaboratory 直接Google一下: 点击进去看看: 发现是Colaboratory的简介,里面附有一些简单的代码告诉你怎么使用这个玩意儿。你会发现它跟Jupyternotebook很像,因为它就是在jupyter

Elasticsearch的mapping数据类型设置

穿精又带淫゛_ 提交于 2020-04-24 16:45:48
1.字段类型概述 2.字符串类型 (1)string string类型在ElasticSearch 旧版本中使用较多,从ElasticSearch 5.x开始不再支持string,由text和keyword类型替代。 (2)text 当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分析器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。 (3)keyword keyword类型适用于索引结构化的字段,比如email地址、主机名、状态码和标签。如果字段需要进行过滤(比如查找已发布博客中status属性为published的文章)、排序、聚合。keyword类型的字段只能通过精确值搜索到。 3.整数类型 在满足需求的情况下,尽可能选择范围小的数据类型。比如,某个字段的取值最大值不会超过100,那么选择byte类型即可。迄今为止吉尼斯记录的人类的年龄的最大值为134岁,对于年龄字段,short足矣。字段的长度越短,索引和搜索的效率越高。 4.浮点类型 对于float、half_float和scaled_float,-0.0和+0.0是不同的值,使用term查询查找-0.0不会匹配+0.0,同样range查询中上边界是-0.0不会匹配+0.0,下边界是+0.0不会匹配-0.0。

生成任务:语言的中外翻译,你应该知道的NLP生成任务

拥有回忆 提交于 2020-04-23 16:34:00
神经机器翻译 机器翻译的目标是将文本从一种语言自动翻译成另一种语言,给定一个待翻译的语言的文本序列, 不存在一个翻译是当前文本的最佳翻译。 这是因为人类语言天生的模糊性和灵活性.这使得自动机器翻译这一挑战变得困难, 也许这是人工智能中最难的一项挑战。 常规的机器翻译方法有统计机器翻译和神经机器翻译,这里我们主要讨论神经机器翻译。 从上图中我们可以看到,翻译的主要任务是在学习源端词到目标端词的一种映射关系,同时还包括调序,例如先翻译了read a book 而不是on Sunday。 那么如何评价翻译质量如何呢? 翻译专员人工评价(准确度更高,但费时费力) 自动评价(速度快,方便模型迭代,但存在缺陷) 实验操作1 In[36] # run prediction !tar -zxf /home/aistudio/data/data13032/ddle_ai_course.t -C /home/aistudio WORK_PATH = "/home/aistudio/paddle_ai_course" # decompress pretrained models !tar -zxf {WORK_PATH}/model_big.tgz -C {WORK_PATH} !tar -zxf {WORK_PATH}/model_small.tgz -C {WORK_PATH} !cd {WORK