【深度学习】【入门】Linear和flatten

1.Linear

1.Linear的概念

  Linear 层,通常也被称为全连接层,是神经网络中一种经典且基础的层结构。它的核心特点是每一个神经元都与上一层的所有神经元相连接,这种全连接的方式使得信息能够在层与层之间充分传递和整合

2.Linear层的作用

  Linear 层在神经网络中主要承担着特征整合与输出映射的重任。在经过卷积、池化等层提取出数据的局部特征后,Linear 层能够将这些分散的局部特征进行整合,挖掘出特征之间的深层关联。同时,在网络的最后部分,Linear 层会将整合后的特征映射到具体的输出空间

3.Linear层的核心要素

  

1.输入与输出维度

   Linear 层有明确的输入维度和输出维度,输入维度对应上一层输出特征的数量,输出维度则根据具体任务需求来设定

2.权重与偏置

  Linear层的运算涉及权重矩阵和偏置向量。权重矩阵的维度为(输入维度,输出维度),它决定了上一层每个神经元对当前层每个神经元的影响程度;偏置向量的维度为(输出维度),用于调整输出结果,增加模型的灵活性

3.线性变换运算

  Linear 层的运算本质上是一种线性变换,对于输入特征向量 x,经过 Linear 层后的输出 y 可以表示为 y = x * W + b,其中 W 是权重矩阵,b 是偏置向量

4.代码

import torch​
import torch.nn as nn​
​
# 定义一个输入特征数为100,输出特征数为10的Linear层​
linear_layer = nn.Linear(in_features=100, out_features=10)​
# 随机生成一个输入张量,形状为(batch_size=2, in_features=100)​
input_tensor = torch.randn(2, 100)​
# 通过Linear层得到输出​
output_tensor = linear_layer(input_tensor)​
print("输出张量形状:", output_tensor.shape)  # 输出应为(2, 10)

2.Flatten

1.Flatten概念

  在深度学习中,很多层的输出往往是多维的张量,例如卷积层输出的特征图通常是(batch_size, channels, height, width)的四维张量。而 Linear 层需要的输入是一维的特征向量,此时 Flatten 层就发挥了关键作用,它能够将多维张量展平为一维向量,为后续的 Linear 层处理做好准备

2.Flatten层的作用

  Flatten 层的核心作用就是数据格式转换。它将多维的输入张量按照一定的顺序(通常是从后往前依次拼接)展平成一个一维的向量。这种转换不会改变数据的本质信息,只是改变了数据的组织形式,使得多维特征能够被 Linear 层等需要一维输入的层所处理

3.Flatten层的核心要素

 1.保留批量维度

  在展平过程中,Flatten 层会保留输入张量的批量维度(batch_size),只对其他维度进行展平操作。这是非常重要的,因为批量维度用于表示一次处理的样本数量,不能被改变

2.展平顺序

  不同的深度学习框架可能采用不同的展平顺序,但通常都是按照自然的维度顺序进行展平,即先展平最后一个维度,再依次向前

4.代码

import torch​
import torch.nn as nn​
​
# 定义一个Flatten层​
flatten_layer = nn.Flatten()​
# 随机生成一个四维输入张量,形状为(2, 3, 4, 4)​
input_tensor = torch.randn(2, 3, 4, 4)​
# 通过Flatten层得到展平后的张量​
flattened_tensor = flatten_layer(input_tensor)​
print("展平前形状:", input_tensor.shape)  # 输出(2, 3, 4, 4)​
print("展平后形状:", flattened_tensor.shape)  # 输出(2, 3*4*4)=(2, 48)

你可能感兴趣的:(深度学习,人工智能)