news 2026/10/15 20:28:19

Transformer 大语言模型(LLM)基石 - Transformer架构详解 - 前馈神经网络(Feed-Forward Neural Network)详解以及算法实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Transformer 大语言模型(LLM)基石 - Transformer架构详解 - 前馈神经网络(Feed-Forward Neural Network)详解以及算法实现

锋哥原创的Transformer 大语言模型(LLM)基石视频教程:

https://www.bilibili.com/video/BV1X92pBqEhV

课程介绍

本课程主要讲解Transformer简介,Transformer架构介绍,Transformer架构详解,包括输入层,位置编码,多头注意力机制,前馈神经网络,编码器层,解码器层,输出层,以及Transformer Pytorch2内置实现,Transformer基于PyTorch2手写实现等知识。

Transformer 大语言模型(LLM)基石 - Transformer架构详解 - 前馈神经网络(Feed-Forward Neural Network)详解以及算法实现

每个编码器层还包含一个前馈神经网络。这个网络通常由两个全连接层(线性变换)构成,中间有一个非线性激活函数(例如ReLU)。

  • 功能:进一步对每个位置的表示进行处理,以增强模型的表达能力,防止过拟合

  • 结构:首先是一个全连接层,然后是一个激活函数(如ReLU),最后是另一个全连接层。该操作是对每个位置独立进行的。

代码实现:

# 前馈神经网络 class FeedForward(nn.Module): def __init__(self, d_model, d_ff, dropout=0.1): # d_model输入维度 512 d_ff 输出维度 2048 super().__init__() self.linear1 = nn.Linear(d_model, d_ff) # 线性变换1 self.linear2 = nn.Linear(d_ff, d_model) # 线性变换2 self.dropout = nn.Dropout(dropout) # 创建dropout层 def forward(self, x): """ 前向传播 参数: x: 输入张量 [batch_size, seq_len, d_model] 返回: 前馈神经网络输出 """ x = self.dropout(F.relu(self.linear1(x))) x = self.linear2(x) return x

测试代码:

if __name__ == '__main__': vocab_size = 2000 # 词表大小 embedding_dim = 512 # 词嵌入维度大小 embeddings = Embeddings(vocab_size, embedding_dim) embed_result = embeddings(torch.tensor([[1999, 2, 99, 4, 5], [66, 2, 3, 22, 5], [66, 2, 3, 4, 5]])) print(embed_result.shape) print(embed_result) positional_encoding = PositionalEncoding(embedding_dim) result = positional_encoding(embed_result) print('result=', result) print('result.shape=', result.shape) # 测试自注意力机制层 # query = key = value = result # mask = create_sequence_mask(5) # dropout = nn.Dropout(0.1) # attention_output, attention_weights = self_attention(query, key, value, mask, dropout) # print("attention_output.shape:", attention_output.shape) # [3, 5, 512] # print("attention_weights.shape:", attention_weights.shape) # [3, 5, 5] mha = MultiHeadAttention(d_model=512, num_heads=8) mask = create_sequence_mask(5) result = mha(result, result, result, mask) print('result:', result.shape) # 测试前馈神经网络 ffn = FeedForward(d_model=512, d_ff=2048) ffn_result = ffn(result) print('ffn_result:', ffn_result.shape)

运行输出:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 13:09:38

一次搞懂!JavaScript中的引用赋值、浅拷贝和深拷贝

如果你经常搞混 深浅拷贝 和 引用赋值,总是记不住它们有什么区别,在实际开发中总是踩坑——比如不小心修改了原始数据、或者拷贝不彻底导致奇怪的 bug——那么恭喜你,这篇文章就是为你写的!我会用最直白的语言、清晰的图示和大量实…

作者头像 李华
网站建设 2026/10/15 10:28:04

AWS S3生命周期配置终极指南:从入门到架构级优化的完整方案

AWS S3生命周期配置终极指南:从入门到架构级优化的完整方案 【免费下载链接】aws-cli Universal Command Line Interface for Amazon Web Services 项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli 掌握S3生命周期配置是云存储成本优化的核心技能…

作者头像 李华
网站建设 2026/10/15 8:29:25

面试测试工程师,都要考察什么?

今年刚接触了(功能)测试工程师的面试工作,有遇到对信贷业务流程较熟悉的、工作内容纯测试app功能的、什么都接触过但是不够深入的,发现简历上写的东西和实际真的有点差距,面试也是一个艺术活。 为了更好地考察面试者的…

作者头像 李华
网站建设 2026/10/15 16:30:23

快速上手OneBlog:简单易用的Java开源博客系统终极指南

快速上手OneBlog:简单易用的Java开源博客系统终极指南 【免费下载链接】OneBlog :alien: OneBlog,一个简洁美观、功能强大并且自适应的Java博客 项目地址: https://gitcode.com/gh_mirrors/on/OneBlog OneBlog是一款基于SpringBoot开发的Java开源…

作者头像 李华
网站建设 2026/10/15 14:11:45

光模块电源噪声容忍度测试

Picotest这款产品挺不错的,但是持续电流只支持6A,有没有能支持15A的产品呢?P2124A 是一款基于氮化镓 (GaN) 的探头,用于 PSNR 和其他抗噪性能测试。它将电源轨电压与调制信号相结合,施加到待测器件 (DUT) 上&#xff0…

作者头像 李华
网站建设 2026/10/15 16:06:05

大模型应用:完整语音交互闭环:TTS+ASR融合系统可视化场景实践.22

一、引言在文章开始之前,先简单释义说明一下,TTS即文本转语音,ASR即语音转文本,前面的章节我们仔细通俗的讲解了TTS和ASR的原理和各自应用场景,今天我们将两者结合在一起进行深度分析,首先我们需要考虑&…

作者头像 李华