nlp常用文本处理模型 nlp文本分类数据集是做什么的
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
学习NLP不用愁了。
算力、环境配置谷歌提供,Colab套件对NLP全场景支持。
有了算力,还差教程,现在NLP学习合集大全套来了。
△超强NLP合集
网站名直译过来就是――超强NLP合集!
181个超全资源合集,各个类型全都有,总有一款适合你。
△资源概览
光说不练假把式,既然是资源,就是让人用的,满满干货,无套路。
使用资源只需要三步:
1、打开网站,选择、搜索自己感兴趣的内容,比如搜索NLP领域最火的BERT。
△网站地址见文末
2、可以按描述内容选择自己感兴趣的模型,打开最后一列的Colab链接。
得益于谷歌的慷慨,无需担心环境配置,直接进去学习即可。
这里以第一个BERT搜索结果为例?。
△Transfer Learning with BERT
3、在进入Colab之后,和本地notebook文件使用方法是一样的,检查好配置之后,就可以按照目录进行学习,实时交互反馈结果。
这也是这份合集的意义,不再是干巴巴的说教,而是图文并茂可运行的实例,练起来!
当然,BERT只是其中一种类型,如果还没看够,下面是我们梳理的一些分类,可供选用。
1、按所用模型分类,可分为ANN、AxCell、BERT、CNN、GPT-2、LSTM等;
2、按任务类型分类,可分为分类、对话系统、词嵌入、语言模型、机器翻译、问答系统、情感分析等;
3、按所用框架分类,可分为PyTorch、TensorFlow、Keras等。
基本上涵盖了现在NLP发展的全景,不论是框架还是模型、任务,你都能在这里找到适合自己学习的对象。
此外,你也可以为抗击疫情出份力。
△COVID-19相关内容
可以BERT来了解疫情期间人们的情绪变化,内容丰富,目录清晰,上手即可操作。
比如说OpenAI刚更新的GPT模型,当然,受限于时间,现在只有GPT-2模型,但了解一下GPT本身也是好的。
△GPT-2模型
其中有一位国人作者,15 亿参数 GPT2 中文预训练模型,可以对GPT2本身有直观了解。
并且和谷歌drive一起使用,数据集存放也非常方便,全部流程只需点击两次。
模型本身已经被训练完毕,只需要加载训练使用即可,就这么简单,适合想直接使用的研究。
在作者发布之后,Reddit一片感谢贴,毕竟这么简单无套路的资源合集,可以说很良心了。
△讨论区图
而且这个搜集资源的小网站也是个好去处,481个数据集,从几M到上G,从CSV格式到JSON格式,应有尽有,可以马克一下作为资源站收藏。
△数据集
还有,他们还开发了一款名为RABBIT的文本分类器,可以实时对媒体报道进行分类,帮助我们更好分辨媒体报道的倾向性。
△文本分类器RABBIT
妈妈再也不用担心我被“FAKE NEWS”骗了。
使用教程和下载数据集都要大路畅通哟~
仅仅教程收藏是没用的,一定要自己上手试试哟~
参考链接:
https://www.reddit.com/r/MachineLearning/comments/gvsh51/p_181_nlp_colab_notebooks_found_here/
https://notebooks.quantumstat.com
往期推荐 钟南山团队携手腾讯研发新冠重症AI预测模型,登上Nature子刊 本周优秀开源项目分享,人员检测和跟踪、OCR工具库、汉字字符特征提取工具 等8大开源项目 干货 |分享17个机器学习的常用算法! 机器学习必读TOP 100论文清单:高引用、分类全、覆盖面广丨GitHub 21.4k星新手福利丨超详细的Tengine GEMM矩阵乘法汇编教程
新手福利吧,新手福利的照片,新手福利区,有什么新人福利的软件很多刚入门Tengine的开发者想研读Tengine汇编代码,却苦于没有好的汇编入门教程,没有大神带入门,自己看又看不懂,怎么办?福利来了,Tengine带来了一份超详细的gemm汇编教程。
GEMM简介
什么是GEMM? 它的英文全称是 GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法),Gemm在神经网络的计算中占据很重要的位置。Why gemm is at the heart of deep learning[1]介绍了为什么GEMM在深度学习计算中如此重要,以及卷积计算中是如何使用GEMM。
教程大纲
教程分为三部分:
Step1: 纯C实现的gemm
Step2: 调用OpenBLAS的gemm
Step3: Tengine中的gemm
运行这个教程的代码,你需要:
可以执行armv8汇编的环境,比如RK3399
linux操作系统: 本教程的编译脚本使用的是Makefile
超简洁的教程源码
点击添加图片描述(最多60个字)
Step1: 纯C实现的gemm
step1部分的代码直接执行:
cd step1
make
https://zhuanlan.zhihu.com/p/test
这个程序中我们计算的矩阵乘法是 A(m,k) * B(k,n)=C(m,n):
点击添加图片描述(最多60个字)
矩阵乘法的纯C简洁实现:
void gemm_pure_c(float* A, float* B, float* C,int m,int n,int k)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
C[i*n+j]=0.f;
for(int p=0;p<k;p++)
{
C[i*n+j]+=A[i*k+p]*B[p*n+j];
}
}
}
}
Step2: 调用OpenBLAS的gemm
OpenBLAS[2]是一个开源的基础线性代数计算库,BLAS的英文全称Basic Linear Algebra Subprograms,它在不同的处理器上都做了优化。在Linux上,可以直接通过apt-get安装这个库:
sudo apt-get install libopenblas-dev
运行一下step2的代码
make
export OMP_NUM_THREADS=1
taskset 0x1 https://zhuanlan.zhihu.com/p/test
在RK3399上得到的结果是
[m n k]: 256 128 256
[openblas]: 4.68 ms
[pure c]: 32.22 ms
[blas VS pure_C]: maxerr=0.000076
可以看出,调用OpenBLAS库的性能明显优于纯C实现。
Step3:调用Tengine 16x4 kernel的gemm
这部分教程以 Tengine[3]源码中的 sgemm_4x16_interleave.S[4]为例子,对汇编代码做了一些简化,只支持k为4的倍数的情况。
在使用Tengine的4x16 kernel之前, 首先要对矩阵A和矩阵B的数据进行interleave。什么是interleave呢?Interleave叫交错排布,表示对数据进行重新排布,为了计算的时候读取数据时能更好地利用缓存。这里我们对矩阵A的数据是对m中的每16个元素进行重排, 对矩阵B的数据是对n的每4个元素进行重排。
点击添加图片描述(最多60个字)
Tengine的4x16 kernel计算的n=4,m=16的情况,目前支持的k是4的倍数:
我们在汇编代码的loop4中计算k的每四个元素.
- 加载B的数据到寄存器 v0,v1,v2,v3
- 加载A的数据到寄存器 v4,v5,v6,v7,v8,v9,v10,v11
ldr q0,[x1]
ldr q1,[x1,0x10]
ldp q2, q3,[x1,0x20]
ldp q4, q5,[x2]
ldp q6, q7,[x2,0x20]
ldp q8, q9,[x2,0x40]
ldp q10,q11,[x2,0x60]
下面的动图演示了4x16的kernel的每条指令是如何进行计算的
点击添加图片描述(最多60个字)
最后的汇编对应的是把输出数据保存
stp q16, q17 ,[x0]
stp q18, q19 ,[x0, #0x20]
stp q20, q21 ,[x0, #0x40]
stp q22, q23 ,[x0, #0x60]
stp q24, q25 ,[x0, #0x80]
stp q26, q27 ,[x0, #0xa0]
stp q28, q29 ,[x0, #0xc0]
stp q30, q31 ,[x0, #0xe0]
我们在RK3399上执行step3的代码:
cd step3
make
export OMP_NUM_THREADS=1
taskset 0x1 https://zhuanlan.zhihu.com/p/test
可以看出, Tengine的4x16 kernel性能在这三种实现中是最优的。
[m n k]: 256 256 256
[tengine 4x16]: 7.71 ms
[openblas]: 9.55 ms
[pure c]: 316.00 ms
[blas VS tengine]: maxerr=0.000061
What's more?
这个教程的代码只是一个示例,part3的代码只支持:
m 是16的倍数
n 是4的倍数
k 是4的倍数
看完这个教程,建议可以尝试以下的一些拓展工作:
- 你可以修改代码来支持任意数值的k,可参考[sgemm_4x16_interleave.S][4]这个汇编代码,添加 loop1.
- 你可以把 interleave_B4 函数替换成汇编,以优化性能。
- 你可以拓展代码,支持任意数值的 m and n
- 你可以尝试写一个 4x4_kernel.S 的armv8汇编
- 你可以尝试写一个 4x4_kernel.S 的armv7汇编
教程源码链接:
Reference:
[1]Why gemm is at the heart of deep learning ()
[2]OpenBLAS ()
[3]Tengine ( )
[4]sgemm_4x16_interleave.S( )
ai模型的预测方法 ai特征算法
ai预测模型,ai预测,ai图形预设,ai模型训练流程雷锋网旗下 AI 研习社定期整理国内外 AI 开发相关的技术资讯、学习资料以及开发博客等内容。欢迎投稿,投稿邮箱:zhangxian@leiphone.com。
Jason Brownlee 的时间序列预测教程
这是澳大利亚机器学习专家 Jason Brownlee 撰写的教程,提供了一套用 Python 语言处理时间序列预测问题的模板。该教程一步步向读者展示了应该用什么工具、如何操作,以及为什么这样操作。它使用了波士顿持械抢劫案数量作为案例,旨在解决的问题是对波士顿未来每月抢劫案的数量做合理预测。 全文包含代码长达两万字,是迄今为止最权威、最详细的时间序列预测入门教程之一。具有相当学习价值。
译文地址: http://www.leiphone.com/news/201702/QjrKc9cLWAiqRGhT.html
原文地址:http://machinelearningmastery.com/time-series-forecast-case-study-python-monthly-armed-robberies-boston/
机器学习算法实践之 K 均值聚类的实用技巧
大家一定都知道吴恩达老师在 Coursera 讲授的机器学习课程。美国数据分析专家 Bilal Mahmood,把吴恩达老师课程中对 K 均值聚类算法的介绍做了整理总结,再加入他自己的经验写就本文,教大家如何使用聚类分析对数据自动分段。文章分为两部分:一是对 K 均值聚类算法做综合介绍,二是讲述该算法的主要实战技巧(讨论的重点问题是:应该用多少组簇?)。对于研究聚类问题的开发者具有很高价值。
译文地址:http://www.leiphone.com/news/201702/SPMC0IPBy37vJgqU.html
原文地址: http://www.kdnuggets.com/2017/02/automatically-segmenting-data-clustering.html
OpenAI:如何解决对抗样本带来的安全风险
这是大牛 Ian Goodfellow 等在 OpenAI 博客发表的文章,专门讨论“对抗样本”这一话题。由于能使大多数机器学习算法瘫痪,本文讨论了对抗样本带来的 AI 潜在安全风险,如何解决,并盘点了对付对抗样本的几种主要途径。其中,本文在技术层面详细探讨了为什么 gradient masking 方法无法解决对抗样本问题。
原文地址:https://openai.com/blog/adversarial-example-research/
自然语言处理入门:在数据预处理阶段如何发现 Lexical Units
这是 DataScience.com 自然语言处理入门系列文章的第一弹。本系列将介绍自然语言处理的核心概念、核心难题与挑战,以及主流解决方案。作为该系列的第一篇,文章开头介绍自然语言处理的技术和应用,随机进入技术环节讨论 Lexical Units;尤其是 tokenization 和 normalization 的实现方法。适合 NLP 领域开发者。
雷锋网将为大家奉上后续教程。
原文地址: https://www.datascience.com/blog/introduction-to-natural-language-processing-lexical-units-learn-data-science-tutorials
SVDS:如何选择深度学习框架?
Silicon Valley Database 的研究团队,归纳总结了七大主流深度学习平台框架各自的特性以及优缺点。这些框架包括:TensoFlow,Theano,Torch,Caffe,MXNet,Neon 和 CNTK。该文章旨在为新入门的深度学习开发者提供“应该选择哪个框架?”的指导。更多关于开源框架、工具如何选择的问题,请参考雷锋网系列文章:,,。Tensorflow 全网最全学习资料汇总之框架平台的综合对比【3】盘点四大民间机器学习开源框架:Theano、Caffe、Torch 和 SciKit-learn谷歌、微软、OpenAI 等巨头的七大机器学习开源项目 看这篇就够了
原文链接:http://svds.com/getting-started-deep-learning/