教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本指南基于 AI-For-Beginners 课程 lessons/5-NLP/README.md 展开系统梳理该课程第 5 大节《自然语言处理》的全部核心技术脉络文本如何表示为张量、词嵌入与 Word2Vec、语言建模、RNN/LSTM、生成式网络以及 Transformer 与 BERT。读完本文你将掌握本仓库 NLP 模块的知识框架、环境配置与 GPU 使用注意事项并明确每条学习路径对应的 Notebook 与实验作业可直接在本地或 GPU 环境复现课程中的全部实践。引言为什么需要专门处理文本的神经网络在之前的课程中我们已经学习了如何用神经网络处理表格数据与图像。文本与这两类数据最大的区别在于文本是长度可变的序列而图像的输入尺寸是预先已知的。虽然卷积网络可以从输入数据中抽取局部模式但文本中的模式更为复杂——例如否定词可以与主语相隔任意多个词我不喜欢橙子与我不喜欢那些又大又彩色又好吃的橙子两者仍应被解释为同一个模式。因此处理语言需要引入全新的网络结构即**循环神经网络RNN**与Transformer。在本节中我们聚焦于用神经网络解决各类NLP 任务主要包括任务类型与说明文本分类Text Classification典型的序列分类问题如将邮件分为垃圾/非垃圾将文章按体育、商业、政治等归类开发聊天机器人时需识别用户意图即意图分类intent classification通常涉及大量类别情感分析Sentiment Analysis典型的回归问题为句子给出一个表示积极/消极程度的数值进阶版本为基于方面的情感分析ABSA对句子不同部分方面分别赋予情感例如在这家餐厅我喜欢菜品但氛围很糟糕命名实体识别NER从文本中抽取特定实体如从I need to fly to Paris tomorrow中识别出tomorrow是 DATE、Paris是 LOCATION关键词抽取Keyword Extraction与 NER 类似但无需针对特定实体类型预训练自动抽取对句意重要的词文本聚类Text Clustering将相似句子分组如把技术支持对话中的相似请求归为一类问答Question Answering模型接收文本段落与问题返回问题答案所在位置或直接生成答案文本文本生成Text Generation根据text prompt预测下一个字母/单词本质上可视为分类任务GPT-3 等高级模型还能通过 prompt programming 或 prompt engineering 技术解决分类等其他 NLP 任务文本摘要Text Summarization让计算机“阅读”长文本并浓缩成几句话机器翻译Machine Translation可视为一种语言上的文本理解与另一种语言上的文本生成的组合早期 NLP 任务大多依赖传统方法如语法规则。以机器翻译为例先用解析器把原始句子转换为句法树再抽取更高层的语义结构来表示句意最后基于该语义与目标语言的语法生成结果。如今许多 NLP 任务已能通过神经网络更高效地解决。许多经典 NLP 方法实现在 Python 库 NLTKNatural Language Processing Toolkit 中配套的 NLTK Book 是一本优秀的在线书籍。本课程主要以神经网络完成 NLP 任务并在必要时使用 NLTK。环境配置安装 NLP 依赖库如果你使用本地 Python 环境运行本课程需要用以下命令安装 NLP 所需的全部依赖库PyTorch 版本pip install -r requirements-pytorch.txtTensorFlow 版本pip install -r requirements-tf.txt两份依赖清单都位于 lessons/5-NLP/ 目录下requirements-pytorch.txt 锁定了torch2.12.1、torchtext0.9.1、torchvision0.9.1、nltk3.10.0、numpy1.22.0、gensim4.3.0,5、transformers5.5.0、scikit-learn、matplotlib、scipy、opencv-python、Pillow等。requirements-tf.txt 则包含TensorFlow、TensorFlow_datasets、TensorFlow_text、gensim3.8.3、transformers5.5.0及前述通用库。两份清单共同覆盖了本模块 Notebook 中用到的分词、词向量gensim、预训练模型transformers与深度学习框架。可参考 lessons/0-course-setup/setup.md 了解课程级环境准备。GPU 使用警告与内存优化本节的若干示例会训练相当大的模型运行前请留意以下 GPU 相关要点使用支持 GPU 的计算机建议在带 GPU 的机器上运行 Notebook以缩短大模型的等待时间。GPU 内存约束训练大模型时可能耗尽 GPU 显存。显存消耗因素训练期间消耗的显存量取决于多种因素包括小批量minibatch大小。减小小批量大小若遇到显存不足优先考虑在代码中调小 minibatch 大小。TensorFlow 显存释放问题旧版 TensorFlow 在同一 Python kernel 中训练多个模型时可能无法正确释放 GPU 内存。可将 TensorFlow 配置为仅按需增长显存分配。启用按需分配代码在 Notebook 中加入以下代码physical_devices tf.config.list_physical_devices(GPU) if len(physical_devices)0: tf.config.experimental.set_memory_growth(physical_devices[0], True)从仓库源码看PyTorch 侧的工具模块也会自动选择可用设备例如 lessons/5-NLP/16-RNN/torchnlp.py 开头的device torch.device(cuda if torch.cuda.is_available() else cpu)在训练循环中特征与标签统一.to(device)迁移从而在 GPU/CPU 间无缝切换。第 1 站把文本表示为张量13-TextRep文本分类与 AG News 数据集本节前半部分聚焦文本分类任务使用 AG News 数据集其中的新闻条目形如类别Sci/Tech标题Ky. Company Wins Grant to Study Peptides (AP)正文AP - A company founded by a chemistry researcher at the University of Louisville won a grant to develop...目标是根据文本把新闻归入若干类别之一。仓库工具代码 lessons/5-NLP/14-Embeddings/torchnlp.py 与 lessons/5-NLP/16-RNN/torchnlp.py 中的load_dataset即直接通过torchtext.datasets.AG_NEWS(root./data)加载该数据集并将类别固定为[World, Sports, Business, Sci/Tech]标签在送入模型前会做-1偏移以对齐索引。文本表示的两类方案计算机本就用 ASCII 或 UTF-8 编码把字符映射为数字但计算机并不理解字母的含义神经网络的语义理解完全来自训练过程。表示文本可以有两种基本思路字符级表示把每个字符当作一个数字。若语料共有C个不同字符单词Hello将被表示为 5×C的张量每个字母对应 one-hot 编码的一列。词级表示为文本中所有词建立词表vocabulary再用 one-hot 编码表示单词。由于单个字母本身意义有限用更高层的语义概念词能简化神经网络的任务但大词表会带来高维稀疏张量的问题。无论采用哪种表示第一步都是把文本转换为token 序列一个 token 可以是字符、单词甚至词的一部分再借助词表把 token 映射为数字最后以 one-hot 编码送入神经网络。N-Gram把上下文带进词表自然语言中词义只有在上下文中才能确定例如neural network神经网络与fishing network渔网含义截然不同。一种解决思路是基于词对建模把词对当作独立的词表 token。句子I like to go fishing会被表示成I like、like to、to go、go fishing。其代价是词表规模显著膨胀且go fishing与go shopping成为完全没有语义相似性的不同 token。有时也会使用三词组合tri-grams这类方法统称n-grams。在字符级表示中n-gram 大致对应不同的音节。Bag-of-Words 与 TF/IDF做文本分类时需要把文本表示成一个固定大小的向量作为最终稠密分类器的输入。最简单的方式是把所有词的表示叠加求和将每个词的 one-hot 编码相加后得到一个频率向量即词袋bag of words, BoW。BoW 本质上刻画了“文本里出现了哪些词、各出现多少次”。例如政治新闻很可能出现president、country而科学论文会出现collider、discovered等词因此词频在很多时候能很好地反映文本内容。BoW 的问题在于and、is这类常见词在大多数文本中出现频率最高掩盖了真正重要的词。为此可引入文档集合中的词频来降低这类词的权重这就是TF/IDF方法的核心思想其细节在本节附带的 Notebook 中有更完整的实现。但无论 BoW 还是 TF/IDF都无法充分捕捉文本的语义这需要更强大的神经网络模型将在后续小节讨论。动手练习与作业Notebook 练习Text Representation with PyTorch、Text Representation with TensorFlow挑战尝试用词袋与不同数据模型做更多练习可参考 Kaggle 上的词向量 NLP 教程竞赛作业Notebooks 作业正如语言学家 J. R. Firth 1935 年所言The complete meaning of a word is always contextual, and no study of meaning apart from context can be taken seriously.一个词的完整意义总是上下文的脱离上下文研究意义是不严肃的。本节技术无法表示词序与语义我们将在语言建模部分学习如何从文本中捕捉上下文信息。第 2 站词嵌入14-Embeddings从 one-hot 到稠密向量基于 BoW/TF-IDF 的分类器操作的是长度为vocab_size的高维稀疏向量且每个词彼此独立one-hot 向量不表达词间的语义相似度。嵌入embedding的思想是用低维稠密向量表示词从而反映词的语义。本节暂时把嵌入视为“降低词向量维数”的手段后续再讨论如何训练出有意义的嵌入。嵌入层以词为输入输出指定embedding_size的向量。它类似Linear层但可直接接收词编号而非 one-hot 向量从而避免构造庞大的 one-hot 向量。把嵌入层作为分类器网络的第一层就能从词袋模型切换到embedding bag模型先把文本中每个词转换为对应嵌入再对所有嵌入做聚合sum、average或max。从仓库代码看lessons/5-NLP/14-Embeddings/torchnlp.py 中的padify按 mini-batch 最大序列长度做零填充与offsetify将定长序列压缩为拼接张量并累积 offsets供EmbeddingBag使用分别对应两种常见的批量编码方式train_epoch_emb则演示了net(text, off)式的训练调用这正是 PyTorchnn.EmbeddingBag的标准输入形态。语义嵌入Word2Vec我们希望学到的向量表示能让相似词或同义词在向量距离如欧氏距离上彼此接近。为此需要在大量文本上以特定方式预训练嵌入模型。经典的 Word2Vec 基于两种主要架构生成词的分布式表示Continuous bag-of-wordsCBoW用上下文预测中间词。给定 n-gram $(W_{-2},W_{-1},W_0,W_1,W_2)$模型的目标是从 $(W_{-2},W_{-1},W_1,W_2)$ 预测出 $W_0$。Continuous skip-gram与 CBoW 相反用当前词预测周围的上下文词。CBoW 更快而 skip-gram 较慢但对不常见词的表示效果更好。Word2Vec 预训练嵌入以及 GloVe 等类似模型可以替代神经网络中的嵌入层使用。但需要注意词表匹配问题预训练模型使用的词表很可能与我们的语料词表不一致如何解决这一问题可参考本节 Notebook。仓库工具encode()见 lessons/5-NLP/14-Embeddings/torchnlp.py对此做了兼容处理同时支持具备get_stoi()方法的 vocab 对象与具备stoi属性的 GloVe 对象未登录词统一映射到unk0。上下文嵌入与一词多义传统预训练嵌入如 Word2Vec的一个关键局限是词义消歧问题一个词的所有可能含义被编码进同一个嵌入向量。例如play在下面两个句子中含义完全不同I went to aplayat the theatre.我去剧院看了一场戏。John wants toplaywith his friends.约翰想和朋友一起玩。上述预训练嵌入把play的两种含义表示成同一个向量。要克服这一局限需要基于语言模型构建嵌入——该模型在大规模语料上训练知道词在不同上下文中的组合方式。上下文嵌入的详细讨论超出本节范围课程将在语言模型部分回归这一主题。练习与作业NotebookEmbeddings with PyTorch、Embeddings TensorFlow挑战Word2Vec 已被用于生成歌词与诗歌等有趣应用。可将这些技术应用到自己的语料上例如从 Kaggle 获取数据。自研阅读Efficient Estimation of Word Representations in Vector SpaceWord2Vec 原论文作业Notebooks 作业第 3 站语言建模15-LanguageModelingWord2Vec、GloVe 这类语义嵌入其实只是迈向语言建模的第一步——即创建某种程度“理解”或“表示”语言本质的模型。语言建模的核心思想是在无标注数据集上以无监督方式训练。这一点很重要无标注文本的规模巨大而有标注文本的数量总是受限于我们能投入的标注工作量。最常见的方法是构建能预测缺失词的语言模型——随机遮盖文本中的一个词作为训练样本非常容易构造。三种训练嵌入的思路N-Gram 语言建模根据前 N 个 token 预测下一个 token。Continuous Bag-of-WordsCBoW在 token 序列 $W_{-N},\dots,W_N$ 中预测中间词 $W_0$。Skip-gram从中间词 $W_0$ 预测邻居 token 集合 ${W_{-N},\dots,W_{-1},W_1,\dots,W_N}$。动手练习训练 CBoW 模型Training CBoW Word2Vec with TensorFlowTraining CBoW Word2Vec with PyTorch结论训练词嵌入并非复杂任务如有需要我们完全可以为领域特定文本训练自己的词嵌入。挑战实验训练 Skip-Gram 模型在 实验说明 中课程挑战你修改本节代码把 CBoW 换成 skip-gram 模型进行训练。第 4 站循环神经网络16-RNN为什么需要 RNN此前我们一直使用丰富的文本语义表示 嵌入之上的简单线性分类器。这类架构捕捉的是句子中词义的聚合信息却不考虑词序——因为嵌入上的聚合操作抹掉了原始文本中的顺序信息。无法建模词序的模型自然无法解决文本生成、问答这类更复杂或更含歧义的任务。循环神经网络RNN逐个符号地把句子送入网络网络产生某个状态state该状态随下一个符号再次传入网络。给定输入 token 序列 X0,…,XnRNN 创建一串共享权重的网络块并用一次反向传播端到端训练每个块接收 (Xi,Si) 并产出 Si1最终状态 Sn或输出 Yn送入线性分类器产生结果。由于状态向量 S0,…,Sn在网络中传递网络可以学习词间的顺序依赖。例如当序列中出现not时网络可以学会对状态向量中的某些元素取反从而实现否定语义。✅ 上图中所有 RNN 块的权重是共享的因此同一张图也可以表示成右侧单个带循环反馈回路的块——把输出状态再传回输入。RNN 单元解剖简单 RNN 单元接收前一个状态 Si-1与当前符号 Xi产出状态 Si有时也产出其他输出 Yi如生成式网络的情形。单元内部有两份权重矩阵一份变换输入符号记为 W另一份变换输入状态记为 H。输出计算为 σ(W×Xi H×Si-1 b)其中 σ 是激活函数b 是偏置。多数情况下输入 token 在进入 RNN 前先经过嵌入层以降低维度。若输入向量维度为emb_size、状态向量维度为hid_size则 W 的尺寸为emb_size×hid_sizeH 的尺寸为hid_size×hid_size。LSTM 与梯度消失问题经典 RNN 的主要问题之一是梯度消失vanishing gradients。由于 RNN 在一次反向传播中端到端训练误差很难传播到网络的前几层网络无法学习相距较远的 token 之间的关系。解决思路之一是引入显式状态管理即使用所谓的门gate。两种著名架构是LSTMLong Short Term Memory与GRUGated Relay Unit。LSTM 的结构与 RNN 类似但每层之间传递两种状态实际状态 C 与隐藏向量 H。每个单元中隐藏向量 Hi与输入 Xi拼接后通过门控制状态 C 的变化。每个门都是带 sigmoid 激活输出范围 [0,1]的神经网络与状态向量相乘时相当于逐位掩码遗忘门forget gate根据隐藏向量决定状态 C 中哪些分量需要遗忘、哪些放行。输入门input gate从输入与隐藏向量提取信息写入状态。输出门output gate先用带tanh激活的线性层变换状态再用隐藏向量 Hi选择其中部分分量产出新状态 Ci1。状态 C 的分量可看作可开关的“标志位”。例如序列中出现名字Alice时可以在状态中打开“句子含女性名词”标志继续读到and Tom时再打开“名词为复数”标志。通过操纵状态网络得以追踪句子成分的语法属性。✅ 理解 LSTM 内部机制的优秀资源是 Christopher Olah 的文章 Understanding LSTM Networks。双向与多层 RNN前面讨论的 RNN 从序列开头向末尾单向运行。这看起来自然因为它类似我们阅读和听语音的方式。但许多实际场景中我们对输入序列可随机访问因此可以双向运行循环计算即双向 RNN此时需要两个隐藏状态向量每个方向一个。与卷积网络类似可以在第一层之上再叠加循环层以捕捉更高层的模式——这就是多层 RNN由两个或更多循环网络组成前一层输出作为后一层输入。多层结构图与更多讨论可参见 16-RNN 课程。练习与作业NotebookRNNs with PyTorch、RNNs with TensorFlow挑战阅读 LSTM 相关文献并思考应用场景如 Grid Long Short-Term Memory、Show, Attend and Tell: Neural Image Caption Generation with Visual Attention作业Notebooks 作业第 5 站生成式网络17-GenerativeNetworksRNN 及其门控变体LSTM、GRU为语言建模提供了机制它们能学习词序并预测序列中的下一个词因此可被用于生成式任务如普通文本生成、机器翻译甚至图像字幕生成。✅ 想一想你在输入时享受过的文本补全体验研究一下你喜欢的应用是否用到了 RNN。上一单元的 RNN 每个单元只输出下一个隐藏状态。实际上我们可以为每个循环单元再增加一个输出从而输出一条与原序列等长的序列也可以使用不接收每步输入、只取初始状态向量的 RNN 单元直接生成一串输出。由此衍生出几种常见的循环网络模式图见 unreasonable-effectiveness-of-rnn.jpg源自 Karpathy 的博客 The Unreasonable Effectiveness of Recurrent Neural NetworksOne-to-one传统的一输入一输出神经网络。One-to-many生成式架构接收一个输入值并生成一串输出。例如训练**图像字幕image captioning**网络时把图片作为输入经 CNN 得到隐藏状态再由循环链逐词生成描述。Many-to-one对应上一单元的 RNN 架构如文本分类。Many-to-many序列到序列sequence-to-sequence对应机器翻译等任务第一个 RNN 把输入序列的全部信息收进隐藏状态第二个 RNN 链把这个状态展开成输出序列。本单元聚焦简单的文本生成模型为简化起见使用字符级token 化。训练时每一步取长度为nchars的字符序列让网络为每个输入字符预测下一个输出字符。推理生成时从一个prompt开始把它送入 RNN 单元得到中间状态然后逐字符生成每生成一个字符就把状态与新字符一起送入下一个 RNN 单元直到生成足够多的字符。软文本生成与温度temperature每个 RNN 单元的输出是字符的概率分布。如果总是取概率最高的字符作为下一个字符生成文本往往会在相同的字符序列间“循环”例如today of the second the company and a second the company ...但观察下一个字符的概率分布会发现最高几个概率的差距往往不大例如一个字符概率 0.2、另一个 0.19。比如序列play之后下一个字符既可能是空格也可能是e如player。因此只选最高概率字符并不总是“公平”的——选次高概率仍可能产生有意义的文本。更明智的做法是从网络输出的概率分布中采样并引入参数temperature想要更多随机性就把分布“拉平”想要更贴近最高概率字符就把分布“变陡”。软生成的实现细节见上面链接的 Notebook。结论与作业文本生成本身很有价值但更大的收益来自用 RNN 从初始特征向量生成文本的能力。例如机器翻译序列到序列此时encoder的状态向量用于生成/解码译文或生成图像的文本描述此时特征向量来自 CNN 提取器。挑战在 Microsoft Learn 上学习文本生成PyTorch/TensorFlow扩展阅读用 Markov Chain、LSTM 与 GPT-2 实现文本生成的不同方法Keras 文档中的字符级文本生成示例作业Word-Level 文本生成实验——课程已演示逐字符生成实验将探索词级文本生成。第 6 站注意力机制与 Transformer18-Transformers从 RNN 翻译到注意力机制NLP 领域最重要的问题之一是机器翻译它是 Google Translate 等工具的基础。本节聚焦机器翻译更广义地说是任何sequence-to-sequence也称sentence transduction任务。用 RNN 实现序列到序列需要两个循环网络编码器encoder把输入序列压缩为隐藏状态解码器decoder把隐藏状态展开成翻译结果。这种方法有两个问题编码器的最终状态很难记住句子开头的信息导致长句翻译质量差序列中所有词对结果的影响相同而实际上输入序列中的特定词往往对某个输出影响更大。注意力机制Attention为 RNN 的每个输出预测加权各输入向量的上下文影响在输入 RNN 与输出 RNN 的中间状态之间建立“捷径”生成输出符号 yt时用不同权重系数 αt,i综合所有输入隐藏状态 hi。架构示意见 encoder-decoder-attention.pngBahdanau et al., 2015。注意力矩阵 {αi,j} 表示输入词对输出序列中某个词的生成所起作用的程度bahdanau-fig3.png 给出了 RNNsearch-50 的对齐矩阵示例。注意力机制是当下 NLP 取得先进成果的重要推手但引入注意力会显著增加模型参数量给 RNN 带来扩展性问题RNN 的循环本质使其难以批量化和并行化训练——序列每个元素必须按顺序处理无法轻易并行。这一约束加上注意力机制的流行催生了如今被广泛使用的 Transformer 模型从 BERT 到 OpenGPT-3。Transformer 的两大核心思想Transformer 的主要思想之一是摆脱 RNN 的顺序性创建训练时可并行的模型通过两个设计实现位置编码positional encoding用自注意力self-attention机制取代 RNN或 CNN来捕捉模式——这正是提出 Transformer 的论文名为Attention is all you need的原因。位置编码/嵌入使用 RNN 时token 的相对位置由步数隐式表示无需显式建模。一旦改用注意力就必须知道序列中 token 的相对位置。做法是把 token 序列与位置序列即 0,1,… 的序号结合。把位置整数转换为向量有两种方案可训练的嵌入本节采用对 token 与位置分别施加嵌入层得到同维向量后相加固定位置编码函数按原论文提出的方式固定计算。位置嵌入的结果同时编码了原始 token 与其在序列中的位置图见 pos-embedding.png。多头自注意力接下来需要捕捉序列中的模式。Transformer 使用自注意力——本质上是把注意力应用于同一序列输入即输出。自注意力能纳入句内上下文看到哪些词相互关联例如识别it这类指代词被哪些词指代图见 CoreferenceResolution.png来自 Google Blog。Transformer 使用多头注意力Multi-Head Attention使网络能同时捕捉多种不同类型的依赖关系如长程与短程词关系、指代关系等。Transformer 层的更多实现细节见 TransformersTF.ipynb。编码器-解码器注意力Transformer 中注意力出现在两处用自注意力捕捉输入文本内的模式执行序列翻译——编码器与解码器之间的注意力层。编码器-解码器注意力与本节开头介绍的 RNN 注意力机制非常相似动画图解见 transformer-animated-explanation.gif。由于每个输入位置独立映射到每个输出位置Transformer 比 RNN 更容易并行化从而支撑更大、更具表达力的语言模型每个注意力头可学习词间的不同关系提升下游 NLP 任务表现。BERT 与迁移学习BERTBidirectional Encoder Representations from Transformers是大型多层 Transformer 网络BERT-base有 12 层BERT-large有 24 层。模型先在大型文本语料WikiPedia 书籍上用无监督训练预测句子中被遮盖的词预训练吸收大量语言理解能力再通过微调fine tuning结合其他数据集复用这一过程称为迁移学习transfer learning。掩码语言建模示意见 jalammarBERT-language-modeling-masked-lm.png。练习与作业NotebookTransformers in PyTorch、Transformers in TensorFlow扩展阅读解释经典 Attention is all you need 论文的博客文章以及一系列图文详解 Transformer 架构的博文作业Transformers 作业Transformer 架构还有很多变体如 BERT、DistilBERT、BigBird、OpenGPT-3 等均可微调使用。HuggingFace 工具包 提供了用 PyTorch 与 TensorFlow 训练其中许多架构的仓库。本模块学习路径总览课程 lessons/5-NLP/README.md 明确了本节的六步学习路线每步均配有独立的课程说明、Notebook 练习与作业把文本表示为张量词嵌入Word Embeddings语言建模循环神经网络生成式网络Transformer整个模块的编排逻辑清晰递进先用 BoW/TF-IDF 建立“文本→固定向量”的直觉再引入稠密嵌入解决稀疏与语义相似度问题接着用无监督语言建模训练出真正有语义的嵌入然后以 RNN/LSTM 建模序列与词序用生成式网络实现逐字符文本生成最终过渡到并行化、可扩展的注意力与 TransformerBERT时代。若对经典机器学习视角下的 NLP 感兴趣可参考 lessons/5-NLP/README.md 中提到的 ML-For-Beginners 系列 6-NLP 课程。实践建议与注意事项按顺序学习文本表示 → 嵌入 → 语言建模 → RNN → 生成网络 → Transformer每一步都为下一步铺垫核心概念。框架二选一PyTorch 与 TensorFlow 两个版本 Notebook 内容等价按你熟悉的框架选择即可工具代码集中在各课的torchnlp.py可直接复用其load_dataset、encode、padify、offsetify、train_epoch等函数。数据自动下载torchtext.datasets.AG_NEWS会在./data目录自动获取 AG News 数据集仓库根目录的 data/ 中已包含课程早期用到的mnist.pkl.gz运行本模块前请确保网络可用。GPU 显存管理训练大模型前先按上文启用 TensorFlow 按需显存分配或调小 minibatch 大小PyTorch 侧device检测已内置于工具模块。预训练词表对齐使用 Word2Vec/GloVe 预训练嵌入时注意其词表与自身语料词表不一致的问题参考 Notebook 与工具模块中encode()的兼容处理方式。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI-For-Beginners 课程之自然语言处理NLP学习路线从文本表示到大型语言模型AI For Beginners 课程之自然语言处理NLP学习路线从文本表示到大型语言模型 导读 本文是 lessons/5 NLP/README.md教程人工智能机器学习深度学习AI-For-Beginners 课程 NLP 章节全景用神经网络攻克自然语言处理的 9 类核心任务AI For Beginners 课程 NLP 章节全景用神经网络攻克自然语言处理的 9 类核心任务 本节内容源自 AI For Beginners http教程人工智能机器学习深度学习终极指南如何用TRIBE v2进行多模态脑成像数据分析终极指南如何用TRIBE v2进行多模态脑成像数据分析 想要准确预测大脑对自然刺激的响应吗TRIBE v2作为一款革命性的深度多模态脑编码模型为神经科学研上一篇JeecgBoot工作流实战Flowable流程引擎快速入门指南下一篇Cloudflare OS基于Cloudflare Workers的终极AI工作空间让文档创建与应用开发更简单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考