从零开始了解transformer的机制|第四章:FFN层的作用

什么是FFN层?

FFN层就是feed forward层。他本质上就是一个两层的MLP。这个MLP的数学本质是:

其中两层感知机中,第一层会将输入的向量升维,第二层将向量重新降维。这样子就可以学习到更加抽象的特征。

 FFN的作用是什么?

转载:

 此外,还有关于深度学习可解释性的研究表明,FFN其实有一定的记忆功能。

论文链接:

https://arxiv.org/abs/2012.14913

知乎上大佬的解析:

大型语言模型系列解读(二):Transformer中FFN的记忆功能 - 知乎 (zhihu.com)

 

### 前馈神经网络(FFN)的实现路径与文件目录结构 前馈神经网络(Feedforward Neural Network, FFN)作为一种基础的人工神经网络模型,在实际开发中的实现通常依赖于现代深度学习框架,如 TensorFlow、PyTorch 或 Keras。以下是关于其实现路径以及可能的文件目录结构的设计。 #### 1. **核心组件设计** 在构建 FFN 时,主要涉及以下几个部分: - 输入:接收原始数据。 - 隐藏:由多个全连接组成,每包含若干神经元并使用激活函数处理输入信号[^2]。 - 输出:提供预测结果或分类标签。 这些次可以通过矩阵运算来表示,并利用非线性激活函数增强表达能力。例如,一个多 FFN 可以被视作一个复杂的非线性映射 \( \phi(x) \),将高维空间中的输入向量转化为目标输出[^3]。 #### 2. **基于 PyTorch 的实现示例** 以下是一个简单的 FFN 实现在 Python 中的例子: ```python import torch import torch.nn as nn import torch.optim as optim class FeedForwardNetwork(nn.Module): def __init__(self, input_size, hidden_sizes, output_size): super(FeedForwardNetwork, self).__init__() layers = [] prev_size = input_size # 构建隐藏 for size in hidden_sizes: layers.append(nn.Linear(prev_size, size)) layers.append(nn.ReLU()) # 使用 ReLU 激活函数 prev_size = size # 添加输出 layers.append(nn.Linear(prev_size, output_size)) self.network = nn.Sequential(*layers) def forward(self, x): return self.network(x) # 定义超参数 input_dim = 784 # MNIST 数据集图像展平后的维度 hidden_dims = [128, 64] # 隐藏数组 output_dim = 10 # 分类类别数 model = FeedForwardNetwork(input_dim, hidden_dims, output_dim) criterion = nn.CrossEntropyLoss() # 损失函数 optimizer = optim.Adam(model.parameters(), lr=0.001) # 优化器 ``` 上述代码展示了如何创建一个具有两隐藏的简单 FFN 并配置训练所需的损失函数和优化算法。 #### 3. **推荐的项目文件夹结构** 为了便于管理和扩展,建议采用清晰的模块化文件组织形式: ``` project/ │ ├── data/ # 存储预处理的数据集 │ ├── train.csv # 训练数据 │ └── test.csv # 测试数据 │ ├── models/ # 含有不同类型的模型定义 │ └── feed_forward.py # 包含 FFN 类型的具体实现 │ ├── utils/ # 工具脚本集合 │ └── preprocessing.py # 处理数据的方法 │ ├── main.py # 主程序入口 └── requirements.txt # 列出所需库及其版本号 ``` 这种布局有助于团队协作及长期维护,同时也方便后续加入更多复杂功能或者切换其他架构类型[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值