网站主栏目,wordpress安装显示404,自动外链,优化核心系列网站目录
一、简介
二、常见的非线性激活函数
三、实现非线性激活函数
四、示例#xff1a;应用非线性激活函数 一、简介
在神经网络中#xff0c;激活函数的主要目的是引入非线性特性#xff0c;从而使网络能够对非线性数据建模。如果只使用线性变换#xff0c;那么整个神…目录
一、简介
二、常见的非线性激活函数
三、实现非线性激活函数
四、示例应用非线性激活函数 一、简介
在神经网络中激活函数的主要目的是引入非线性特性从而使网络能够对非线性数据建模。如果只使用线性变换那么整个神经网络就会退化为一个线性模型因为线性函数的组合仍然是线性的。非线性激活函数通过引入非线性性质使神经网络能够适应更复杂的数据。
二、常见的非线性激活函数
ReLURectified Linear Unit
ReLU 是一种广泛使用的非线性激活函数。它的数学表达式如下 f(x) max(0, x)ReLU 将小于零的输入值设为零而大于零的输入值保持不变。这种性质使得神经网络能够学习到稀疏特征加速训练以及更好地处理梯度消失问题。在 PyTorch 中可以使用 torch.nn.ReLU() 实现 ReLU 激活。
Sigmoid 函数
Sigmoid 函数是另一种非线性激活函数它的数学表达式如下 f(x) 1 / (1 exp(-x)) Sigmoid 函数将输入值映射到 0 到 1 之间它在二元分类问题中广泛使用。然而Sigmoid 函数在深度神经网络中容易出现梯度消失问题。在 PyTorch 中可以使用 torch.nn.Sigmoid() 实现 Sigmoid 激活。
三、实现非线性激活函数
在 PyTorch 中实现非线性激活函数非常简单。首先定义一个继承自 nn.Module 的类然后在 forward 方法中应用所需的激活函数。下面是一个使用 ReLU 和 Sigmoid 激活函数的示例 import torch
from torch import nn
from torch.nn import ReLU, Sigmoidclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init()self.relu ReLU()self.sigmoid Sigmoid()def forward(self, x):x_relu self.relu(x)x_sigmoid self.sigmoid(x)return x_relu, x_sigmoid在上面的示例中首先导入必要的库然后定义了一个自定义模型 MyModel它包含了 ReLU 和 Sigmoid 激活函数。在 forward 方法中分别应用了这两个激活函数。
四、示例应用非线性激活函数
下面将看到一个具体的示例把非线性激活函数应用于图像数据。然后使用 PyTorch 和 CIFAR-10 数据集这是一个广泛使用的图像分类数据集。最后使用 ReLU 和 Sigmoid 激活函数并使用 TensorBoard 可视化结果。
import torch
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoader
import torchvision.datasets# 加载 CIFAR-10 数据集
dataset torchvision.datasets.CIFAR10(D:\\Python_Project\\pytorch\\dataset2, trainFalse, transformtorchvision.transforms.ToTensor(), downloadTrue)
dataloader DataLoader(dataset, batch_size64)# 定义自定义模型
class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.relu ReLU()self.sigmoid Sigmoid()def forward(self, x):x_relu self.relu(x)x_sigmoid self.sigmoid(x)return x_relu, x_sigmoid# 创建模型实例和 TensorBoard 编写器
model MyModel()
writer SummaryWriter(logs)
step 0# 遍历数据集并应用模型
for data in dataloader:imgs, targets dataoutput_relu, output_sigmoid model(imgs)writer.add_images(input, imgs, step)writer.add_images(output_relu, output_relu, step)writer.add_images(output_sigmoid, output_sigmoid, step)step 1writer.close()在上面的示例中首先加载 CIFAR-10 数据集然后定义了一个自定义模型 MyModel其中包含了 ReLU 和 Sigmoid 激活函数。遍历数据集将输入图像和经过激活函数处理后的输出图像写入 TensorBoard以便进行可视化。
通过这个示例可以看到非线性激活函数如何改变输入数据引入非线性特性从而增强神经网络的建模能力。
参考资料
视频教程PyTorch深度学习快速入门教程绝对通俗易懂【小土堆】