TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
Dataset可以用来表示输入管道元素集合(张量的嵌套结构)和“逻辑计划“对这些元素的转换操作。在Dataset中元素可以是向量,元组或字典等形式。 另外,Dataset需要配合另外一个类Iterator进行使用,Iterator对象是一个迭代器,可以对Dataset中的元素进行迭代提取。
在整个机器学习过程中,除了训练模型外,应该就属数据预处理过程消耗的精力最多,数据预处理过程需要完成的任务包括数据读取、过滤、转换等等。为了将用户从繁杂的预处理操作中解放处理,更多地将精力放在算法建模上,TensorFlow中提供了data模块,这一模块以多种方式提供了数据读取、数据处理、数据保存等功能。本文重点是data模块中的Dataset对象。
机器学习通常涉及在训练期间可视化和度量模型的性能。有许多工具可用于此任务。在本文中,我们将重点介绍 TensorFlow 的开源工具套件,称为 TensorBoard,虽然他是TensorFlow 的一部分,但是可以独立安装,并且服务于Pytorch等其他的框架。
首先介绍数据读取问题,现在TensorFlow官方推荐的数据读取方法是使用tf.data.Dataset,具体的细节不在这里赘述,看官方文档更清楚,这里主要记录一下官方文档没有提到的坑,以示"后人"。因为是记录踩过的坑,所以行文混乱,见谅。
下面附上一张 pack_padded_sequence 原理图(其实只是将三维的输入去掉PAD的部分搞成了二维的。在RNN前向的时候,根据batch_sizes参数取对应的时间步计算。)
今天继续啃Tensorflow实战Google深度学习框架这本书,在250P的Seq2Seq模型代码理解时候有点困难,其中padded_batch(batch_size,padded_shapes)这个函数为最,本次仅为记录刨根问底的过程,也是整理一下类似函数的理解过程。
这一节总体上是一个对我们这一门课的一次proj的总结,这一次proj是一次深度学习(deep learning)模型的完整模型搭建,也是一个对于深度学习初学者来说极为具有挑战性的一次proj,因为会遇到各种各样意想不到的问题。因此这一篇文章也是一次完整的,从读取数据到跑出模型的全过程。
如果你用过 PyTorch 进行深度学习研究和实验的话,你可能经历过欣喜愉悦、能量爆棚的体验,甚至有点像是走在阳光下,感觉生活竟然如此美好 。但是直到你试着用 PyTorch 实现可变大小的 mini-batch RNNs 的时候,瞬间一切又回到了解放前。
代码来源:https://github.com/eriklindernoren/ML-From-Scratch
文本数据在处理的时候,由于各样本的长度并不一样,有的句子长有的句子短。抛开动态图、静态图模型的差异,由于需要进行矩阵运算,句长需要是等长的才可以,这就需要padding操作。padding一般是用最长的句子长度为最大长度,然后其他样本补0到最大长度,这样样本就是等长的了。
今天我就把一些常见的考题给大家整理下,这些题也是我之前准备面试的时候整理的,很多的代码都是网上现有的代码,感谢各位大佬的付出,我这里就作为一个搬运工了,把这些代码跟我之前整理到的一些资料都给大家系统整理下,希望各位也可以去他们那里给个star或者赞!
配置方式支持python/json/yaml,从mmcv的Config解析,其功能同maskrcnn-benchmark的yacs类似,将字典的取值方式属性化.这里贴部分代码,以供学习。
本博客对原始IMDB数据集进行预处理,建立一个简单的深层神经网络模型,对给定数据进行情感分析。
这几天一些同学在面试的时候,遇到了一些手写代码的题,因为之前都没有准备到,所以基本上在写的时候都有点蒙。
上一篇通过转载|使用PaddleFluid和TensorFlow训练RNN语言模型大家了解了:
如今,深度学习和机器学习算法正在统治世界。PyTorch是最常用的深度学习框架之一,用于实现各种深度学习算法。另一方面,基于学习的方法本质上需要一些带注释的训练数据集,这些数据集可以被模型用来提取输入数据和标签之间的关系。为了给神经网络提供数据,我们定义了一个数据加载器。
本文我写了一个基于tensorflow的DCNN的实现,原文是A Convolutional Neural Network for Modelling Sentences,地址如下:
seq2seq还是很赞的,既能做翻译、又能做image captioning,还能做多标签。
Dataset数据结构应用非常灵活,因为它本质上是一个Sequece序列,其每个元素可以是各种类型,例如可以是张量,列表,字典,也可以是Dataset。
作者 | Thomas Wolf 编译 | 雁惊寒 情感情绪检测是自然语言理解的关键要素。最近,我们改造出了一个好用的情感理解集成系统,该系统前身是MIT媒体实验室的情感检测模型DeepMoji。 开源代码:https://github.com/huggingface/torchMoji 该模型最初的设计使用了TensorFlow、Theano和Keras,接着我们将其移植到了pyTorch上。与Keras相比,pyTorch能让我们更自由地开发和测试各种定制化的神经网络模块,并使用易于阅读的numpy风
该文章介绍了在深度学习模型中,不同框架之间的区别和优劣。文章首先讨论了Keras和PyTorch这两个框架在深度学习模型开发中的优缺点,然后介绍了两种框架在特定场景下的使用方式。作者认为,尽管Keras和PyTorch的基本功能相似,但Keras更倾向于简化和自动化,而PyTorch则倾向于灵活性和动态计算。在特定场景下,比如需要快速原型设计或需要与PyTorch生态系统兼容的情况下,Keras可能更适合。然而,在需要更灵活、动态的模型构建,以及需要深入了解模型构建和调试的情况下,PyTorch可能更适合。
文本分类是NLP领域的较为容易的入门问题,本文记录文本分类任务的基本流程,大部分操作使用了torch和torchtext两个库。
自然语言处理(Natural Language Processing,NLP)是人工智能领域中一个重要的研究方向。随着深度学习技术的快速发展,基于深度学习的自然语言处理方法逐渐成为主流。本文将介绍深度学习算法在自然语言处理中的应用,并探讨其在不同任务中的优势和挑战。
前一章Doc2Vec里提到,其实Doc2Vec只是通过加入Doc_id捕捉了文本的主题信息,并没有真正考虑语序以及上下文语义,n-gram只能在局部解决这一问题,那么还有别的解决方案么?依旧是通用文本向量,skip-thought尝试应用encoder-decoder来学习包含上下文信息和语序的句子向量。魔改后的实现可以看这里( ´▽`) github-DSXiangLi-Embedding-skip_thought
本文介绍了如何使用TensorFlow进行图像分类,包括数据集准备、模型训练和评估以及部署。作者还介绍了如何使用TensorFlow进行图像字幕生成,并提供了示例代码。
深度学习正在给自然语言处理带来巨大的变革,例如机器翻译,情感分析,问答系统等落地实践。深度学习对NLP的影响主要有如下几点:
机缘巧合在DC竞赛上看到了这个比赛,这个编程比赛正是数据类算法比赛,主要是自然语言处理相关的文本多分类任务,老肥我从来没有学习过这NLP领域相关的知识,正好借这个比赛学习充电,在此分享一个简单的baseline方案,比赛地址文末阅读原文即可直达。
(2)词转成向量(word2vec,Glove,bert,nn.embedding)
该层创建了一个卷积核,该卷积核以 单个空间(或时间)维上的层输入进行卷积, 以生成输出张量。 如果 use_bias 为 True, 则会创建一个偏置向量并将其添加到输出中。 最后,如果 activation 不是 None,它也会应用于输出。
深度学习模型在计算机视觉与语音识别方面取得了卓越的成就,在 NLP 领域也是可以的。将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似 n-gram 的关键信息),从而能够更好地捕捉局部相关性。
本文是我之前写过的一篇基于推特数据进行情感分析的文章(https://ahmedbesbes.com/sentiment-analysis-on-twitter-using-word2vec-and-keras.html)的延伸内容。那时我建立了一个简单的模型:基于 keras 训练的两层前馈神经网络。用组成推文的词嵌入的加权平均值作为文档向量来表示输入推文。
包括3个文件 init.py, rnn.py, clip_grad.py, weight_norm.py 这里面是一些nn的工具,比如rnn中的序列打包成PackedSequence和解包还原成程度不等序列
本次用到的数据集是三个 txt 文本,分别是 cowper.txt、derby.txt、butler.txt ,该文本已经经过一些预处理,去除了表头,页眉等
我们在前文介绍过,微软 ZeRO 可以对一个万亿参数模型可以使用 8 路模型并行、64 路管道并行和 8 路数据并行在 4,096 个 NVIDIA A100 GPU 上进行扩展。而FSDP(Fully Sharded Data Parallel)是Facebook 深度借鉴微软ZeRO之后提出的PyTorch DDP升级版本,可以认为是对标微软 ZeRO,其本质是 parameter sharding。Parameter sharding 就是把模型参数等切分到各个GPU之上。我们会以 Google,微软和 Facebook 的论文,博客以及代码来进行学习分析。
在介绍LSTM各种参数含义之前我们还是需要先用一个例子(参考LSTM神经网络输入输出究竟是怎样的?Scofield的回答)来理解LSTM。
深度学习现在发展十分迅猛,每天都会出现多种应用程序。而想要了解深度学习的最好方法就是亲自动手。尽可能尝试自己做项目。这将帮助你更深入地了解它们,并帮助你成为更好的深度学习实践者。
我们的任务是将ULMFit(Ruder等人,2018)等监督/半监督技术应用于Twitter美国航空公司情绪分析数据。
Pytorch通常使用Dataset和DataLoader这两个工具类来构建数据管道。
如果需要训练的数据大小不大,例如不到1G,那么可以直接全部读入内存中进行训练,这样一般效率最高。
作者:saiwaiyanyu 链接:https://juejin.im/post/5dd9e07b51882572f00c4523
什么是 Unicode?Unicode 是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
2. 对接性:TensorFlow中也加入了高级API (Estimator、Experiment,Dataset)帮助建立网络,和Keras等库不一样的是:这些API并不注重网络结构的搭建,而是将不同类型的操作分开,帮助周边操作。可以在保证网络结构控制权的基础上,节省工作量。若使用Dataset API导入数据,后续还可选择与Estimator对接。
Mamba一直在人工智能界掀起波澜,被吹捧为Transformer的潜在竞争对手。到底是什么让Mamba在拥挤的序列建中脱颖而出?
2018年的深度兴趣演化网络, DIEN(DeepInterestEvolutionNetWork)。
每天给你送来NLP技术干货! ---- 编辑:AI算法小喵 写在前面 在《一文详解生成式文本摘要经典论文Pointer-Generator》中,我们已经详细地介绍过长文本摘要模型 PGN+Coverage。这个工作小喵20年初的时候不仅研读了,同时也做了相关的复现与优化尝试,没记错的话当时用的是TF框架。碍于年代久远,当时也没有做笔记的习惯,所以没法跟大家分享相关的实践内容。 不过,小喵最近发现了一篇与之相关实践类博文,作者将 PGN+Coverage 用在营销文本生成任务上。整个实验与代码实现写的非常详细
处理自然语言的模型通常使用不同的字符集处理不同的语言。Unicode是一种标准编码系统,用于表示几乎所有语言的字符。每个字符都使用0到0x10FFFF之间的唯一整数编码点进行编码。Unicode字符串是由零个或多个代码点组成的序列。本教程展示了如何在TensorFlow中表示Unicode字符串,并使用标准字符串操作的Unicode等效项来操作它们。它基于脚本检测将Unicode字符串分隔为令牌。
领取专属 10元无门槛券
手把手带您无忧上云