MLP多层感知机与Pytorch实现

news2024/11/25 23:02:25

 参考文章:

1.动手学深度学习——多层感知机(原理解释+代码详解)_多层感知机 代码-CSDN博客

2.4.1. 多层感知机 — 动手学深度学习 2.0.0 documentation

3.深度理解多层感知机(MLP) | 米奇妙妙屋

1. 神经网络由来

神经网络的灵感取自于生物上的神经元细胞。希望仿照人类神经网络的结构,搭建一种人为的神经网络结构,从而使其能够完成一些计算任务。

神经网络中计算的基本单元是神经元,一般称作节点(node)或者单元(unit)。每个节点可以从其他节点接收输入,或者从外部源接收输入,然后计算输出。每个输入都各自的权重(weight,即 w),用于调节该输入对输出影响的大小,节点的结构如下图。

其中:

  • 输入:x1,x2
  • 权重:x1的权重为w1,x2的权重为w2
  • 偏置:b (偏置的主要功能是为每一个节点提供可训练的常量值)
  • 激活函数:f 

注意:一般采用非线性函数,其作用是将非线性引入神经元的输出。因为大多数现实世界的数据都是非线性的,我们希望神经元能够学习非线性的函数表示,如果激活函数仍然是线性的,那么根据线性可叠加的原理,整个函数模型仍然是线性的,那么就无法解决我们遇到的问题(例如异或),因此激活函数非线性这一点非常重要。

2. 激活函数

几种激活函数:

  • Sigmoid(S 型激活函数):输入一个实值,输出一个 0 至 1 间的值 σ(x) = 1 / (1 + exp(−x))

  • tanh(双曲正切函数):输入一个实值,输出一个 [-1,1] 间的值 tanh(x) = 2σ(2x) − 1

  • ReLU:ReLU 代表修正线性单元。输出一个实值,并设定 0 的阈值(函数会将负值变为零)f(x) = max(0, x)

  • 第一种Sigmoid就是逻辑回归使用的激活函数,往往应用于二分类;在神经网络中,我们往往更倾向于使用最后一种relu函数作为激活函数。

import torch
from d2l import torch as d2l

# Relu
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = torch.relu(x)
d2l.plot(x.detach(), y.detach(), 'x', 'relu(x)', figsize=(5, 2.5))
d2l.plt.show()

# Relu的导数
y.backward(torch.ones_like(x), retain_graph=True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of relu', figsize=(5, 2.5))
d2l.plt.show()

# sigmoid
y = torch.sigmoid(x)
d2l.plot(x.detach(), y.detach(), 'x', 'sigmoid(x)', figsize=(5, 2.5))
d2l.plt.show()

# 清除以前的梯度
x.grad.data.zero_()
y.backward(torch.ones_like(x),retain_graph=True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of sigmoid', figsize=(5, 2.5))
d2l.plt.show()

# tanh
y = torch.tanh(x)
d2l.plot(x.detach(), y.detach(), 'x', 'tanh(x)', figsize=(5, 2.5))
d2l.plt.show()

# 清除以前的梯度
x.grad.data.zero_()
y.backward(torch.ones_like(x),retain_graph=True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of tanh', figsize=(5, 2.5))
d2l.plt.show()

2.1 ReLU函数

2.2 sigmoid函数

2.3 tanh函数

3.MLP结构

  • 输入节点(Input Nodes):输入节点从外部世界提供信息,总称为输入层。在输入节点中,不进行任何的计算,仅向隐藏节点传递信息。

  • 隐藏节点(Hidden Nodes):隐藏节点和外部世界没有直接联系(由此得名)。这些节点进行计算,并将信息从输入节点传递到输出节点。隐藏节点总称为隐藏层。尽管一个前馈神经网络只有一个输入层和一个输出层,但网络里可以没有隐藏层(如果没有隐藏层,激活函数选择sigmod,那么就变成逻辑回归了),也可以有多个隐藏层。

  • 输出节点(Output Nodes):输出节点总称为输出层,负责计算,并从网络向外部世界传递信息。

4. 过拟合与欠拟合

5.什么是Dropout

5.1Dropout具体工作流程

5.2 为什么说Dropout可以解决过拟合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT指导如何完整写出研究论文的摘要

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在学术写作中,学习如何为研究论文撰写简短且内容丰富的摘要非常重要。摘要可以让读者了解你的研究成果,快速浏览并决定是否要阅读更多内容。 但研究论文中的摘要…

Python面试宝典第23题:分发糖果

题目 n 个孩子站成一排,给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果。 (1)每个孩子至少分配到 1 个糖果。 (2)相邻两个孩子评分更高的孩子会获得更多的糖果。 请…

AI绘画SD万能模型 ControlNet Union (也称ControlNet++ 或 ControlNetPlus)!10余种控制效果一键生成!

大家好,我是画画的小强 Controlnet 可以说是目前最重要的一款 AI 绘画控制插件,可以帮我们实现轮廓、深度、动作姿势、颜色等多种控制效果。由于每种控制条件都需要调用不同的控制模型,加上 SD1.5 和 SDXL 的生态并不互通,大家肯…

【ROS 最简单教程 006/300】使用 launch 启动多个 ROS 节点

使用 launch 文件,可以一次性启动多个 ROS 节点 launch 文件编写的语法规则参见 👉 launch 文件编写 💜 💜 💜 💜 💜 简单示例如下 不使用 launch 需要启动三个命令行终端窗口,分别…

电商电子面单API对接方法

电商业务管理过程中,商家想要高效发货,使用电子面单是必不可少的,因为电子面单成本低、效率高,所以电商ERP、打单软件等这类应用对接电商电子面单API的需求量非常大。当应用通过电商电子面单API与电商平台、快递公司系统打通后&am…

Reranker技术

文章目录 Reranker技术0. 什么是RAG1. 什么是Reranker?2. Reranker在RAG技术中的应用3.使用 Reranker 的优缺点4.总结参考:知乎 Reranker技术 0. 什么是RAG 基础 RAG 的操作流程大致如下:首先,你需要将文本切分成小段&#xff0…

《深度RAG系列》 LLM 为什么选择了RAG

2023年是AIGC(Artificial Intelligence Generated Content)元年,这一年见证了人工智能生成内容领域的巨大飞跃,特别是大模型的爆发,它们在自然语言处理、图像生成、音频处理等多个领域展现出了惊人的能力。 这些预训练…

UVC驱动分析(一)

UVC驱动分析 UVC驱动简介Linux video框架分层UVC驱动注册UVC驱动注册入口函数UVC设备探测初始化UVC描述符解析V4L2设备注册UVC控制参数初始化UVC video驱动注册UVC 状态初始化 UVC驱动简介 UVC全称为USB Video Class,即:USB视频类,是一种为U…

Vue组件库移动端预览实现原理

引言 大家如果使用过移动端组件库(比如:Vant),会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的,切换组件的时候,移动端预览的内容也会发生相应的变化。 …

基于python的百度迁徙迁入、迁出数据分析(四)

这篇文章是对上篇文章的可获取数据的时间区间的修正,依然通过开发者模式找寻相关数据源,我直接把数据url贴在这里,可以发现里面包含了相对明面上看不到的数据包括,行政区id、春运迁徙数据等:qianxi.cdn.bcebos.com/app…

LYT-Net——轻量级网络低光照条件图像修复模型推理部署(C++/Python)

1.环境安装 conda create -n LYT_Torch python3.9 -y conda activate LYT_Torchconda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidiapip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm tensor…

Conformal low power-7.运行Conformal Low Power 1801流程

要获取有关原生1801流程的最新信息(例如功能、指南、常见问题解答和dofile脚本),请使用SET WEB_INTERFACE ON命令启动Web界面。 左手边列出了所有的Conformal产品。还有一个名为“Sample Dofiles”的部分,提供了在不同场景下运行C…

第一个Python Web程序

1、离线安装Django 由于Python是3.7版本,Django选择2.2.4版本,并且中间需要安装依赖包。全部安装包如下: 打开Anaconda Prompt,先进入Python3.7环境,然后依次安装各个包: 至此,Django离线安装成功。 2、编写第一个Django程序 2.1 创建Django项目 创建项目welcome时…

C#初级——继承

继承 继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类(父类&#xff0…

(自适应手机端)行业协会机构网站模板

(自适应手机端)行业协会机构网站模板PbootCMS内核开发的网站模板,该模板适用于行业协会网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机端,同一个后台,数据即时同步&#…

git的配置使用

第三周 Tursday 早 git日志的安装使用 [rootweb ~]# yum -y install git.x86_64 //安装软件包 [rootweb ~]# rpm -ql git //查看git的包 ​ [rootweb ~]# mkdir /yy000 //创建新目录 [rootweb ~]# cd /yy000/ [rootweb yy000]# git init //将当前目录做为仓库…

基于SpringBoot+Vue的娱乐代理售票系统(带1w+文档)

基于SpringBootVue的娱乐代理售票系统(带1w文档) 基于SpringBootVue的娱乐代理售票系统(带1w文档) 休闲娱乐代理售票系统的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了休闲娱乐代理售票管理的信息…

Why decoder-only? LLM架构的演化之路

如何根据大模型架构进行选型 ©作者|Zhongmei 来源|神州问学 引言 本文想为大型语言模型(LLMs)及其下游自然语言处理(NLP)任务的实践者和用户提供一份全面且实用的指南。将从模型架构的角度出发,对比不同架构的…

多线程上下文切换:详解与优化

多线程上下文切换:详解与优化 一、什么是多线程上下文切换?二、对性能的影响2.1 优点2.2 缺点 三、优化策略 💖The Begin💖点点关注,收藏不迷路💖 一、什么是多线程上下文切换? 多线程上下文切…