文章列表
前言
对Google开源出来的bert代码,来阅读下。不纠结于代码组织形式,而只是梳理下其训练集的生成,训练的self-attention和multi-head的具体实现。
训练集的生成
主要实现在create_pretraining_data.py和tokenization.py两个脚本里。输入文本格式举例,下面是两篇文章外加一篇空文章。两篇文章之间用空格作间隔。
This is a blog about bert code reading.It is writed using markdown, which is a markup language that can be writ ...
https://www.jianshu.com/p/22e462f01d8c
pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现实(在Google Cloud TPU v2 上训练BERT-Base要花费近500刀,耗时达到两周。在GPU上可想而知只会更贵),但是学习bert的预训练方法可以为我们弄懂整个bert的运行流程提供莫大的帮助。预训练涉及到的模块有点多,所以这也将会是一篇长文,在能简略的地方我尽量简略,还是那句话,我的文章只能是起到一个导读的作用,如果想摸清里面的各种细节还是要自己把源码过一遍的。
p ...
https://jalammar.github.io/illustrated-transformer/
The Illustrated Transformer
Discussions: Hacker News (65 points, 4 comments), Reddit r/MachineLearning (29 points, 3 comments) Translations: Chinese (Simplified), Korean Watch: MIT’s Deep Learning State of the Art lecture referencing this post ...
https://zhuanlan.zhihu.com/c_153732961
https://zhuanlan.zhihu.com/p/50773178
概述
本文基于 pytorch-pretrained-BERT(huggingface)版本的复现,探究如下几个问题:
pytorch-pretrained-BERT的基本框架和使用
如何利用BERT将句子转为词向量
如何使用BERT训练模型(针对SQuAD数据集的问答模型,篇幅问题,可能下篇再写)
因为已经有很多文章对BERT的结构和效果做了详尽的介绍,所以对于模型的效果和结构就不在这里赘述了。
基本框架和使用
环境
首先,利用pip安装包:
1 pip install pytorch-pretr ...
深度炼丹如同炖排骨一般,需要先大火全局加热,紧接着中火炖出营养,最后转小火收汁。本文给出炼丹中的 “火候控制器”-- 学习率的几种调节方法,框架基于 pytorch
1. 自定义根据 epoch 改变学习率。
这种方法在开源代码 ...
学习工具最快的方法就是在使用的过程中学习,也就是在工作中(解决实际问题中)学习。文章结尾处附完整代码。
一、数据准备 在Pytorch中提供了MNIST的数据,因此我们只需要使用Pytorch提供的数据即可。
from torchvision ...
https://zhuanlan.zhihu.com/p/32626442
骆梁宸
paper插画师;poster设计师;oral slides制作人
445 人赞同了该文章
楔子
前些日在写计算数学课的期末读书报告,我选择的主题是「分析深度学习中的各个优化算法」。在此前的 ...
以从某文件夹过滤出py文件为例:
法1:
import glob
import os
os.chdir(“./”)
for file in glob.glob(“*.py”):
print file
法2:
for file in os.listdir(“./”):
if file.endswith(“.py”):
print file
法3:
for root, dirs, files in os.walk(“./”):
for file in files:
if file.endswith(“.py”): ...
**序言:**Adam自2014年出现之后,一直是受人追捧的参数训练神器,但最近越来越多的文章指出:Adam存在很多问题,效果甚至没有简单的SGD + Momentum好。因此,出现了很多改进的版本,比如AdamW,以及最近的ICLR-2018年最佳论文提出的Adam改进版Amsgrad。那么,Adam究竟是否有效?改进版AdamW、Amsgrad与Adam之间存在什么联系与区别?改进版是否真的比Adam更好呢?相信这篇文章将会给你一个清晰的答案。
(内容翻译整理自网络)
Adam Roller-Coaster
Adamoptimizer的发展历程就像坐过山车一样。Adam最先于201 ...
白化(预处理步骤)【转】
介绍
我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。
2D的例子
下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。
如何消除特征之间的相关性?在前文计算时实际上已经消除了输入特征之间的相关性。得到的新 ...
pip install chardet
执行
import chardet
f = open('a.doc',r)
data = f.read()
print chardet.detect(data)
结果
{'confidence': 0.64465744, 'encoding': 'utf-8'}
前面是相似度 后面是编码格式
或者 return chardet.detect(data).get("encoding") 直接获取文件编码格式
一、简化前馈网络LeNet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import torch as t
torch.optim
如何使用optimizer
构建
为每个参数单独设置选项
进行单次优化
optimizer.step()
optimizer.step(closure)
算法
如何调整学习率
torch.optim是实现各种优化算法的包。最常用的方法都已经支持,接口很常规,所以以后也可以很 ...
这篇博客是在pytorch中基于apex使用混合精度加速的一个偏工程的描述,原理层面的解释并不是这篇博客的目的,不过在参考部分提供了非常有价值的资料,可以进一步研究。
一个关键原则:“仅仅在权重更新的时候使用fp32,耗时的前向和后向运算都使用fp16”。其中的一个技巧是:在反向计算开始前,将dloss乘上一个scale,人为变大;权重更新前,除去scale,恢复正常值。目的是为了减小激活gradient下溢出的风险。
apex是nvidia的一个pytorch扩展,用于支持混合精度训练和分布式训练。在之前的博客中,神经网络的Low-Memory技术梳理了一些low-memory技术, ...