认识激活函数

使用 PyTorch 的深度学习入门

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

激活函数

$$

  • 激活函数为网络添加非线性
    • Sigmoid:二分类
    • Softmax:多分类
  • 有了非线性,网络能学习更复杂的关系
  • 将"激活前"输出传入激活函数

含线性层与激活函数的神经网络示意图

使用 PyTorch 的深度学习入门

认识 sigmoid 函数

部分神经网络的示意图,包含输入、线性层和激活函数

  • 哺乳动物还是不是?

一只狐猴的插图

使用 PyTorch 的深度学习入门

认识 sigmoid 函数

部分神经网络的示意图,包含输入和线性层

  • 哺乳动物还是不是?

一只狐猴的插图

  • 输入:
    • 四肢:4
    • 产卵:0
    • 毛发:1
使用 PyTorch 的深度学习入门

认识 sigmoid 函数

部分神经网络的示意图,包含输入和线性层输出为数字 6

  • 哺乳动物还是不是?

一只狐猴的插图

  • 线性层的输出是 6
使用 PyTorch 的深度学习入门

认识 sigmoid 函数

部分神经网络的示意图,包含输入、线性层输出为数字 6,以及 sigmoid 激活函数

  • 哺乳动物还是不是?

一只狐猴的插图

  • 取激活前输出(6),传入 sigmoid 函数
使用 PyTorch 的深度学习入门

认识 sigmoid 函数

部分神经网络的示意图,包含输入、线性层输出为数字 6、sigmoid 激活函数和最终输出

  • 哺乳动物还是不是?

一只狐猴的插图

  • 取激活前输出(6),传入 sigmoid
  • 得到 0 到 1 之间的值

  • 若输出 > 0.5,类别 = 1(哺乳动物)

  • 若输出 <= 0.5,类别 = 0(非哺乳动物)
使用 PyTorch 的深度学习入门

认识 sigmoid 函数

import torch
import torch.nn as nn

input_tensor = torch.tensor([[6]])
sigmoid = nn.Sigmoid()

output = sigmoid(input_tensor) print(output)
tensor([[0.9975]])
使用 PyTorch 的深度学习入门

末层激活

model = nn.Sequential(
  nn.Linear(6, 4), # First linear layer
  nn.Linear(4, 1), # Second linear layer
  nn.Sigmoid() # Sigmoid activation function
)

将 Sigmoid 作为线性层网络的最后一步与传统逻辑回归等价

使用 PyTorch 的深度学习入门

认识 softmax

  • 三个类别:
使用 PyTorch 的深度学习入门

认识 softmax

  • 三个类别:

带有"鸟类"选项的狐猴

使用 PyTorch 的深度学习入门

认识 softmax

  • 三个类别:

带有"鸟类"和"哺乳动物"选项的狐猴

使用 PyTorch 的深度学习入门

认识 softmax

  • 三个类别:

三种选项:鸟类、哺乳动物、或爬行动物的狐猴图

使用 PyTorch 的深度学习入门

认识 softmax

部分神经网络的示意图,包含输入

  • 接收三维输入,输出形状不变
使用 PyTorch 的深度学习入门

认识 softmax

部分神经网络的示意图,包含输入、线性层的向量输出、softmax 激活函数和最终输出

  • 接收三维输入,输出形状不变
  • 输出为概率分布:
    • 每个元素是概率(取值在 0 到 1 之间)
    • 输出向量之和等于 1
使用 PyTorch 的深度学习入门

认识 softmax

部分神经网络的示意图,包含输入、线性层的向量输出、softmax 激活函数和最终输出

  • 接收三维输入,输出形状不变
  • 输出为概率分布:
    • 每个元素是概率(取值在 0 到 1 之间)
    • 输出向量之和等于 1
使用 PyTorch 的深度学习入门

认识 softmax

import torch
import torch.nn as nn

# Create an input tensor
input_tensor = torch.tensor(
    [[4.3, 6.1, 2.3]])

# Apply softmax along the last dimension

probabilities = nn.Softmax(dim=-1) output_tensor = probabilities(input_tensor) print(output_tensor)
tensor([[0.1392, 0.8420, 0.0188]])
  • dim = -1 表示在输入张量的最后一维上应用 softmax
  • 可将 nn.Softmax() 作为 nn.Sequential() 的最后一步
使用 PyTorch 的深度学习入门

Passons à la pratique !

使用 PyTorch 的深度学习入门

Preparing Video For Download...