2020-03-06 《Deep Learning With PyTorch》 Chapter 3

Diving Deep into Neural Networks

  1. 训练 DL 的步骤:建立数据集;建立网络模型;通过损失函数评价模型效果;通过优化函数优化模型权重参数。
    image.png
  1. Linear layer 也被称为全连接层(fully connected layer)。其实现的变换为:Y = Wx + b。实例化:myLayer = Linear(in_features=10,out_features=5,bias=True)

  2. multiple linear layer 没有意义。因为其功能完全可以通过单个 linear layer 实现。

  3. 常用的非线性层函数(激活函数)有: Sigmoid, Tanh, ReLU, Leaky ReLU。

  • Sigmoid:{\sigma}(x)=1/(1+e^{-x})
image.png
  • Tanh:2·sigmoid(2x)-1
image.png
  • ReLU:f(x)=max(0,x)
image.png
  1. 通过 nn.Module 构建 DL 模型。 nn.Module 包含两个函数:_init_ 和 _forward_。在 _init_ 里,进行设置 layers 的操作;在 _forward_ 里,进行前向传播的设置。激活函数可以设置在 _init_ 里,也可以设置在 _forward_ 里,一般而言,设置在后者更利于理解。示例如下:
class MyFirstNetwork(nn.Module):
  def __init__(self,input_size,hidden_size,output_size):
      super(MyFirstNetwork,self).__init__()
      self.layer1 = nn.Linear(input_size,hidden_size)
      self.layer2 = nn.Linear(hidden_size,output_size)
  def __forward__(self,input):
      out = self.layer1(input)
      out = nn.ReLU(out)
      out = self.layer2(out)
      return out
  1. 针对不同的 ML 问题,需要不同结构的模型,尤其是最后一个 layer 极其重要。
问题 最后一层的函数选择 场景举例
回归问题 regression problem Linear layer 预测价格
分类问题 binary classifying Sigmoid function 识别猫狗
多分类问题 multi-class classification Softmax layer 识别猫、狗、熊猫
  1. 损失函数
问题 常用的损失函数选择 场景举例
回归问题 regression problem mean square error (MSE) 预测价格
分类问题 binary classifying cross-entropy 识别猫狗
多分类问题 multi-class classification cross-entropy 识别猫、狗、熊猫
  1. 常用的优化函数有:ADADELTA, Adagrad, Adam, SparseAdam, Adamax, ASGD, LBFGS, RMSProp, Rprop, SGD。每次训练都需要对优化函数进行梯度清零的操作,否则会有梯度累积。
for input, target in dataset:
    optimizer.zero_grad()
    output = model(input)
    loss = loss_fn(output, target)
    loss.backward() # 计算梯度
    optimizer.step() # 优化参数
  1. 本节最后描述了通过 PyTorch 识别猫和狗的完整过程。(不感兴趣,略过。)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。