ChatGPT学习笔记之Linear层和ReLU 激活函数

有一个简单的学习模型

class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc1 = nn.Linear(4, 16)  # 输入4维,隐藏层16维
        self.fc2 = nn.Linear(16, 4)  # 隐藏层16维,输出4类
        self.relu = nn.ReLU()  # 激活函数ReLU

    def forward(self, x):
        x = self.relu(self.fc1(x))
        x = self.fc2(x)
        return x

问:为什么模型中需要Linear和ReLU

 

问:4维向量如何映射到16维

 

问:16维如何映射到4维

 

常见的层

  1. 卷积层 (nn.Conv2d)

    • 用于处理图像数据,进行卷积操作,提取局部特征。
    • 例子:nn.Conv2d(in_channels, out_channels, kernel_size)
  2. 池化层 (nn.MaxPool2d, nn.AvgPool2d)

    • 用于下采样操作,减少特征图的尺寸,同时保留重要信息。
    • 例子:nn.MaxPool2d(kernel_size, stride)
  3. 批量归一化层 (nn.BatchNorm2d)

    • 用于对每一批数据进行归一化,稳定训练过程。
    • 例子:nn.BatchNorm2d(num_features)
  4. 循环神经网络层 (nn.RNN, nn.LSTM, nn.GRU)

    • 用于处理序列数据,例如时间序列、文本等。
    • 例子:nn.LSTM(input_size, hidden_size, num_layers)
  5. 嵌入层 (nn.Embedding)

    • 用于将离散的词汇表示为连续的向量,用于自然语言处理任务。
    • 例子:nn.Embedding(num_embeddings, embedding_dim)

常见的激活函数

  1. ReLU (nn.ReLU)

    • 例子:nn.ReLU()
  2. Sigmoid (nn.Sigmoid)

    • 用于将输出映射到(0, 1)区间。
    • 例子:nn.Sigmoid()
  3. Tanh (nn.Tanh)

    • 用于将输出映射到(-1, 1)区间。
    • 例子:nn.Tanh()
  4. Leaky ReLU (nn.LeakyReLU)

    • 类似于ReLU,但允许小的负梯度。
    • 例子:nn.LeakyReLU(negative_slope)
  5. Softmax (nn.Softmax)

    • 用于多分类问题,将输出转换为概率分布。
    • 例子:nn.Softmax(dim)

常见的损失函数

  1. 交叉熵损失 (nn.CrossEntropyLoss)

    • 用于多分类问题。
    • 例子:nn.CrossEntropyLoss()
  2. 均方误差损失 (nn.MSELoss)

    • 用于回归问题。
    • 例子:nn.MSELoss()
  3. 二分类交叉熵损失 (nn.BCELoss)

    • 用于二分类问题。
    • 例子:nn.BCELoss()

常见的优化器

  1. 随机梯度下降 (torch.optim.SGD)

    • 例子:torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
  2. Adam (torch.optim.Adam)

    • 例子:torch.optim.Adam(model.parameters(), lr=0.001)
  3. RMSprop (torch.optim.RMSprop)

    • 例子:torch.optim.RMSprop(model.parameters(), lr=0.01)

这些层和函数可以组合起来构建各种复杂的神经网络模型,适用于不同的任务和数据类型。具体选择哪些层和函数取决于你要解决的问题和数据的特性。

posted @ 2024-06-25 16:27  阿坦  阅读(39)  评论(2编辑  收藏  举报