八、神经网络-线性层及其他层介绍

小土堆的视频:https://www.bilibili.com/video/BV1hE411t7RN/?spm_id_from=333.1391.0.0&p=21&vd_source=6cb513d59bf1f73f86d4225e9803d47b

Linear Layers及其他一些层:
image

Linear layer的作用:(以self.Linear1=nn.Linear(3072,10)为例)

  • 特征降维:原始 3072 维的特征被映射到 10 维。
  • 线性变换:利用权重 W 和偏置 b 进行仿射变换,提取输入数据的全局特征。
  • 后续分类或回归任务:
    • 如果 10 是类别数,这可能是一个分类任务(通常会接 Softmax)。
    • 如果 10 代表某些连续值特征,这可能是一个回归任务。

以下为Linear层的示例:

dataset=torchvision.datasets.CIFAR10(root='./dataset', train=False, transform=torchvision.transforms.ToTensor())
dataloader=torch.utils.data.DataLoader(dataset, batch_size=64, shuffle=True,drop_last=True)

class MM(nn.Module):
    def __init__(self):
        super(MM, self).__init__()
        self.Linear1=nn.Linear(3072,10)

    def forward(self, x):
        output=self.Linear1(x)
        return output

mm=MM()

for data in dataloader:
    imgs,targets=data
    print(imgs.shape)

    # output=torch.reshape(imgs,(64,-1)) #和下面这条都行,都是将其进行展平(保持batch大小)
    output=torch.flatten(imgs,start_dim=1)
    print(output.shape)

    output=mm(output)
    print(output.shape)

Linear的数学表达式解释:
self.Linear1 = nn.Linear(3072, 10)是一个全连接层(线性层),输入维度是 3072,输出维度是 10。

  • 线性变换的数学表达式:
    image

  • 其中:

    • X 是输入张量,形状为 (batch_size, 3072)
    • W 是权重矩阵,形状为 (10, 3072)
    • b 是偏置项,形状为 (10,)
    • Y 是输出张量,形状为 (batch_size, 10)
posted @ 2025-03-27 13:06  W-Vicky11  阅读(64)  评论(0)    收藏  举报