一、Linear(线性层)
即神经网络的线性层,用于将输入映射到下一层的特征空间。它接受一个输入并与该层的权重的转置相乘。线性层没有激活函数。
公式:
y = x*W^T + b,其中 W 是权重矩阵,b 是偏置向量。
pytorch的线性层代码示例如下:
import torch
import torch.nn as nn
# 定义线性层
linear_layer = nn.Linear(in_features=10, out_features=5)
# 创建输入
input_data = torch.randn(5, 10) # 假设输入维度为10
# 应用线性变换
output = linear_layer(input_data)
print(output)
作者:智慧搬砖者
链接:https://www.zhihu.com/question/607822173/answer/3085671476
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、FC
FC全连接层。全连接层的每个神经元和上一层的所有神经元都有连接,用于把前面提取到的特征综合起来。全连接层通常位于神经网络的最后一层,应用于分类和回归任务。
全连接层的pytorch代码实现如下:
import torch
import torch.nn as nn
# 定义模型参数
input_size = 10 # 输入维度
output_size = 1 # 输出维度
# 创建全连接层
fc_layer = nn.Linear(input_size, output_size)
# 创建输入数据
input_data = torch.randn(1, input_size) # 假设输入维度为10
# 应用全连接层
output = fc_layer(input_data)
print(output)
三、FFN
Fast-forward network(前馈神经网络) 它的神经元只与下一层的神经元连接,没有循环或反馈的连接,可用于分类、回归、聚类任务。它的网络结构包含输入层、隐藏层、输出层。
用pytorch实现一个简单的前馈神经网如下:
import torch
import torch.nn as nn
input_size = 784 # 输入层的大小,等于图片的像素数
hidden_size = 500 # 隐藏层的大小,可以自己设定
num_classes=10
# 定义网络结构
model = nn.Sequential(
nn.Linear(input_size, hidden_size), # 输入层到隐藏层,线性变换
nn.ReLU(), # 隐藏层的激活函数,使用ReLU
nn.Linear(hidden_size, num_classes) # 隐藏层到输出层,线性变换
)
inputs = torch.randn(100, 784);
outputs = model(inputs)
print(outputs.shape) #(100,10)
四:MLP
MLP通常只包含全连接层和激活函数层,而FFN可以包含其他类型的层,如卷积层、池化层、归一化层、残差连接层等2。FFN也可以看作是一种广义的MLP,即任何前馈神经网络都可以看作是一个MLP,但不是所有的MLP都是FFN。