李沐动手学深度学习第4章-4.1多层感知机

本文介绍了多层感知机如何通过隐藏层增强模型能力,重点讨论了ReLU、sigmoid和tanh三种常见的激活函数,包括它们的定义、曲线展示和导数特性。理解这些概念有助于设计更有效的神经网络模型。

在colab中运行本节内容需先安装d2l

!pip install d2l==0.14.

1、隐藏层

我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制, 使其能处理更普遍的函数关系类型。

 多层感知机可以通过隐藏神经元,捕捉到输入之间复杂的相互作用, 这些神经元依赖于每个输入的值。

虽然一个单隐层网络能学习任何函数, 但并不意味着我们应该尝试使用单隐藏层网络来解决所有问题。 事实上,通过使用更深(而不是更广)的网络,我们可以更容易地逼近许多函数。

2. 激活函数

通过计算加权和并加上偏置来确定神经元是否应该被激活, 它们将输入信号转换为输出的可微运算。 大多数激活函数都是非线性的。

导入需要的包:

%matplotlib inline
import torch
from d2l import torch as d2l

2.1. ReLU函数

最受欢迎的激活函数是修正线性单元(Rectified linear unit,ReLU

RELU(x)=max(x,0)

通俗地说,ReLU函数通过将相应的活性值设为0,仅保留正元素并丢弃所有负元素。 为了直观感受一下,我们可以画出函数的曲线图。 正如从图中所看到,激活函数是分段线性的。


                
动手学深度学习》(第二)是由等人编写的经典教材,全面介绍了深度学习的基础理论与实践方法。该书提供了基于PyTorch的代码实现本,便于读者在实际操作中掌握深度学习模型的构建和训练过程。 ### PyTorch教程概述 书中针对PyTorch框架的使用进行了详细讲解,内容涵盖了从环境搭建、张量操作到神经网络模型定义等关键环节。通过配套的代码示例,可以快速上手并理解如何利用PyTorch进行深度学习开发。例如,书中展示了如何使用`torch.nn`模块来构建线性层和激活函数组成的简单网络: ```python import torch from torch import nn net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1)) X = torch.rand(size=(2, 4)) output = net(X) ``` 此代码片段演示了创建一个包含两个全连接层和一个ReLU激活函数的序列模型,并对随机生成的数据执行前向传播计算[^4]。 ### 数据加载与处理 为了更好地进行模型训练,《动手学深度学习》还介绍了数据加载的方法。例如,在时间序列任务中,可以通过以下方式加载数据集: ```python from d2l import torch as d2l batch_size, num_steps = 32, 35 train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps) ``` 上述代码利用了D2L库提供的工具函数,能够高效地读取文本数据并将其转换为适合输入模型的形式[^3]。 ### 模型训练与优化 书中进一步探讨了如何配置损失函数和优化器以完成模型训练。常见的选择包括均方误差损失(MSELoss)以及Adam优化算法。具体实现如下: ```python criterion = nn.MSELoss() optimizer = torch.optim.Adam(net.parameters(), lr=0.001) for epoch in range(num_epochs): for X, y in train_loader: outputs = net(X) loss = criterion(outputs, y) optimizer.zero_grad() loss.backward() optimizer.step() ``` 这段代码展示了典型的训练循环结构,其中包含了前向传播计算损失、反向传播更新权重参数等步骤。 ### 实用技巧与注意事项 - **动态计算图**:PyTorch采用动态计算图机制,使得调试更加直观且灵活。 - **内存管理**:合理控制批量大小(batch size),避免GPU显存溢出。 - **设备迁移**:确保模型和数据位于相同的设备上(CPU/GPU)以提高效率。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值