一、深度学习的简单概念

        深度学习是一种模仿人类大脑的运行方式,从大量数据中学习特征的学习模式。

        深度学习是机器学习的子集,它与机器学习的关系如下:

二、感知神经网络

2.1简单定义

        神经网络(Neural Networks)是一种模拟人脑神经元网络结构的计算模型,用于处理复杂的模式识别、分类和预测等任务。

        神经网络由多个互相连接的节点(即人工神经元)组成。

三、人工神经元

        定义:人工神经元是神经网络的基本构建单位。核心功能是接受输入信号,经过加权求和∑和非线性激活函数f处理后,输出结果。

3.1构造人工神经元

        人工神经元接受信息输入之后经过加权求和处理,在经过激活函数处理(这个不是非得有的过程),最后将结果输出。

        理解图像如下:

3.2组成部分

        根据3.1的图像我们可以观察到x,w,b,∑,f,现进行一一解释:

(1)X:输入input,代表输入数据,通常包含n个特征量,即用向量表示。每一个输入值对应一个权重;

(2)W:权重weight,每一条输入数据都有自己的权重,它表示的是该输入对最终结果的重要程度;

(3)b:偏置bias,一个可调参数,类似于截距,帮助调整模型的输出;

(4)∑:加权求和,输入数据*权重之后再求和,最后加上偏置;

(5)f:激活函数,用于将加权求和后的结果转换为输出结果,引入非线性特性,使神经网络能够处理复杂的任务。

3.3数学表示

数学公式:

3.4对比生物神经元

人工神经元和生物神经元对比如下表:

生物神经元人工神经元
细胞核节点 (加权求和 + 激活函数)
树突输入
轴突带权重的连接
突触输出

四、深入神经网络(重点)

        神经网路是由大量神经单元连接构成的计算模型。每一个神经元的输出作为下一层的输入,最后得到神经网络的输出。

4.1基本结构

(1)输入层:神经网络的第一层,主要是接收输入信息,不进行计算;

(2)隐藏层:位于输入层和输出层之间,进行特征提取和转换。一般有多个层,且每一层一般有多个神经单元;

(3)输出层:神经网络的最后一层,产生最终的结果。

4.2网络构建

神经元:方框

4.3全连接神经网络

定义:每一层的神经元与上一层的所有神经元全连接,一般用于图像分类,文本分类等任务。

 根据3.1的图像我们可以观察到x,w,b,∑,f,并且进行了一一解释:

(1)X:输入input,代表输入数据,通常包含n个特征量,即用向量表示。每一个输入值对应一个权重;

(2)W:权重weight,每一条输入数据都有自己的权重,它表示的是该输入对最终结果的重要程度;

(3)b:偏置bias,一个可调参数,类似于截距,帮助调整模型的输出;

(4)∑:加权求和,输入数据*权重之后再求和,最后加上偏置;

(5)f:激活函数,用于将加权求和后的结果转换为输出结果,引入非线性特性,使神经网络能够处理复杂的任务。

现在我们要了解一下这几个参数的数据形式,如何组成的:

(1)X输入:(batch_size,in_features),输入样本条数,输入特征数量;

(2)W权重:(out_features,in_features),输出特征数量,输入特征数量;

(3)b偏置:(out_features),输出特征数量;

(4)Z输出:(batch_size,out_features),输入样本条数,输出特征数量;

        4.3.1特点

全连接神经网络的特点

(1)全连接层:层与层之间都是相互连接的,后一个神经元与前一个神经元相连;

(2)权重数量:神经元之间是全连接的,权重数都不相同,权重个数多(权重数量太高容易导致模型复杂度高,计算量大,消耗时间长);

(3)学习能力强:能够学习输入数据的全局特征。

        4.3.2计算步骤

(1)数据传输:输入数据经过每一层的计算,逐层传递到输出层;

(2)激活函数:每一层的输出通过激活函数处理后再输出;

(3)损失计算:在输出层计算预测值与真实值之间的差距,即损失函数值;

(4)反向传播:通过backward算法计算每个权重的梯度,并更新权重。

        4.3.3基本组件认知

4.3.3.1线性层组件
(1)介绍

        线性层:神经网络中常用的层类型,主要用于将输入数据通过线性变换映射到输出空间。

API:

from torch import nn

nn.Linear(in_features,out_features,bias=True)

解释:

in_features:输入特征的数量;

out_features:输出特征的数量;

bias:是否设置偏置项,为True则表示设置偏置,为False则表示不设置偏置。

注意:定义单线性层的时候可以不用写类方法,直接调用nn.Linear就好。

非单线性层时,要注意后一层的输入要与前一层的输出对应,要填一样。

(2)代码实现

有两种实现方式:

a.自定义类,依次完成对初始化、对前向方法的描述;

(1)自定义神经网络类,继承nn.Model;

(2)初始化方法,定义线性层;

(3)实现前向传播方法

代码示例:

import torch
from torch import nnclass mynn(nn.Module):def __init__(self,input_size):super().__init__()# 定义线性层self.fc1 = nn.Linear(input_size,64)self.fc2 = nn.Linear(64,32)self.fc3 = nn.Linear(32,1)def forward(self,x):x = self.fc1(x)x = self.fc2(x)x = self.fc3(x)return  xinput_size = 32
model = mynn(input_size)
print(model)

结果:

mynn(
(fc1): Linear(in_features=32, out_features=64, bias=True)
(fc2): Linear(in_features=64, out_features=32, bias=True)
(fc3): Linear(in_features=32, out_features=1, bias=True)
)

b.调用nn.Sequential模型,不用再写对前向传播的逻辑描述。

(1)定义输入特征量;

(2)直接调用API,创建模型;

(3)打印结果

代码示例:

from torch import nn
in_featrues = 32
model = nn.Sequential(nn.Linear(in_featrues,64),nn.Linear(64,32),nn.Linear(32,1)
)
print(model)

结果:

Sequential(
(0): Linear(in_features=32, out_features=64, bias=True)
(1): Linear(in_features=64, out_features=32, bias=True)
(2): Linear(in_features=32, out_features=1, bias=True)
)

4.3.3.2激活函数组件

定义:主要是运用在隐藏层引入非线性,让神经网络学习更复杂的规律,使网络具备非线性能力,增强其表达能力。

常见的损失函数:

API:import torch.nn.function as F

(1)sigmoid函数:会出现梯度消失问题 sigmoid = F.sigmoid()

(2)tanh函数:会出现梯度消失问题 tanh = F.tanh()

(3)ReLU函数:x小于等于0会出现数据丢失问题 relu = F.ReLU()

(4)LakyReLU函数:解决了数据丢失问题 leakyrelu = F.LakyReLU()

(5)softmax函数:可用来做分类 softmax = F.softmax()

4.3.3.3损失函数组件

定义:损失函数是用来量化预测值与真实值之间的差异。

常用的损失函数主要分为两大类:import torch.nn as nn

(1)回归

均方误差损失MSE Loss:Loss = nn.MSELoss()

平均绝对误差损失 L1 Loss:Loss = nn.L1Loss()

(2)分类

交叉熵损失:Loss = nn.CrossEntropyLoss()---多分类

二元交叉熵损失:Loss = nn.BCEWithLogitsLoss()---二分类

4.3.3.4优化器

定义:是用于更新模型参数以最小化损失函数的核心工具。常常定义在损失criterion后。

常用的优化器:

  • SGD(随机梯度下降)

  • Adagrad(自适应梯度)

  • RMSprop(均方根传播)

  • Adam(自适应矩估计)

核心方法:

梯度清零:zero_grad()

参数更新:step()

        4.3.4创建全连接神经网络

我们以求函数的参数为例,介绍全连接神经网络如何解决参数问题。

已知   x = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float)
y = torch.tensor([3, 5, 7, 9, 11], dtype=torch.float)

两个初始数据,现在我们要写一个线性回归函数,求参数解。

步骤:

(1)数据输入;

(2)调用模型;

(3)定义学习率,批次,损失,优化器

(4)循环:前向传播、损失函数、优化器梯度清理、反向传播、优化器参数更新

(5)打印结果

代码示例;

import torch
from torch import nn,optim
#基本数据输入
x = torch.tensor([1, 2, 3, 4, 5], dtype=torch.float).view(5,1)
y = torch.tensor([3, 5, 7, 9, 11], dtype=torch.float).view(5,1)
#调用模型
model = nn.Linear(1,1)
#定义lr,epochs,criterion,optimizer
lr = 0.02
epochs = 300
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(),lr=lr)
#循环,前向传播、Loss、梯度清零、反向传播、梯度更新
for epoch in range(epochs):y_pred = model(x)Loss = criterion(y,y_pred)optimizer.zero_grad()Loss.backward()optimizer.step()
#打印结果
print('权重为',model.weight,'偏置为',model.bias)

结果:

权重为 Parameter containing:
tensor([[2.0241]], requires_grad=True) 偏置为 Parameter containing:
tensor([0.9129], requires_grad=True)

五、小结

        本节内容我们大致对神经元有了一些基础了解,以及全连接神经网络的基本认识和基本操作。尤其是基本组件的部分,这个部分很重要,要清楚创建全连接网络的基本步骤,后续创建奠定基础。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 程序的强名称签名与安全防护技术干货

在 .NET 开发领域,保障程序的安全性和完整性至关重要。强名称签名和有效的安全防护措施是实现这一目标的关键手段。下面将详细介绍 .NET 程序的强名称签名以及相关的安全防护方法。一、什么是强名称签名强名称签名是 .NET 框架提供的一种安全机制,其主要…

DNS(Domain Name System,域名系统)

目录 **一、DNS的核心功能****二、DNS的工作原理****1. 解析流程(以车载导航请求为例)****2. 关键机制****三、车载以太网中DNS的特殊性**1. **高可靠性要求**2. **低延迟优化**3. **安全挑战与防护****四、DNS相关协议与技术****五、车载DNS配置示例****六、DNS故障排查工具…

优化 ECharts 多条折线:折线数据不完整导致的X轴日期错乱问题

目录 一、简单介绍 1.1 常见类型 二、时间轴错乱问题 2.1 示例 2.2 示例完整代码 2.3 问题分析 2.4 修复方法 第一步 第二步 2.5 优化后完整代码 一、简单介绍 ECharts 是一款基于 JavaScript 的数据可视化图表库,动态图表是 ECharts 的一个重要应用场景…

网络安全之注入攻击:原理、危害与防御之道

网络安全之注入攻击:原理、危害与防御之道 引言 在OWASP Top 10安全风险榜单中,注入攻击常年占据首位。2023年Verizon数据泄露调查报告显示,67%的Web应用漏洞与注入类攻击直接相关。本文从技术视角系统解析注入攻击的核心原理、典型场景及防御…

Python爬虫动态IP代理报错全解析:从问题定位到实战优化

目录 一、代理IP失效:爬虫的"隐形杀手" 1.1 失效场景复现 1.2 解决方案 二、403封禁:反爬机制的"精准打击" 2.1 封禁原理剖析 2.2 破解方案 三、速度瓶颈:代理性能的"致命短板" 3.1 性能对比测试 3.2…

机器学习基础知识【 激活函数、损失函数、优化器、 正则化、调度器、指标函数】

目录标题机器学习基础知识概览激活函数 (Activation Functions)损失函数 (Loss Functions / Cost Functions)优化器 (Optimizers)正则化 (Regularization)调度器 (Schedulers / Learning Rate Schedulers)指标函数 (Metric Functions)其他重要概念训练流程机器学习基础知识概览…

【达梦数据库|JPA】后端数据库国产化迁移记录

项目背景 经典的springbootjpa,java1.8数据库MySQL需要迁移到国产化数据库达梦上 开发环境安装 最简单的方式: 官方网站下载安装时选择“典型安装”即可 Linux安装 国产化一律上docer不要犹豫 下载三方提供的docker镜像按页面文档启动即可同上下载官…

ubuntu22默认安装firefox使用snap安装还老打不开解决办法

终极解决方案(100% 避免 Snap 版 Firefox) 步骤 1:彻底移除 Snap 版 Firefox bash sudo snap remove --purge firefox 步骤 2:添加 Mozilla 官方 PPA(提供 .deb 版 Firefox) bash sudo add-apt-repository …

MyBatis02-mybatis-config.xml配置文件讲解

mybatis-config.xml 是 MyBatis 的核心配置文件&#xff0c;用于配置整个 MyBatis 框架的全局行为&#xff0c;比如环境&#xff08;数据源&#xff09;、事务、类型别名、插件、Mapper 映射等。示例&#xff1a;<?xml version"1.0" encoding"UTF-8" ?…

合上电脑不关机

在Debian 系统上&#xff0c;如何实现合上电脑不关机的效果&#xff1f; 可以修改配置文件&#xff1a; sudo vim /etc/systemd/logind.conf1.找到 HandleLidSwitch &#xff0c;将其值改为 ignore &#xff08;处理盖子开关为忽略&#xff09; 2.将 LidSwitchIgnoreInhibited …

服务器深夜告警?可能是攻击前兆!

凌晨三点&#xff0c;刺耳的告警铃声把你从梦中惊醒&#xff1a;服务器CPU 100%&#xff0c;内存耗尽&#xff01;你手忙脚乱地登录服务器&#xff0c;发现某个进程疯狂占用资源。是程序Bug&#xff1f;还是业务突增&#xff1f;排查半天&#xff0c;最后在角落的日志里发现蛛丝…

重学前端003 --- CSS 颜色

文章目录文档声明head颜色模型div根据在这里 Freecodecamp 实践&#xff0c;记录笔记总结。 文档声明 在文档顶部添加 DOCTYPE html 声明 <!DOCTYPE html>head title 元素为搜索引擎提供了有关页面的额外信息。 它还通过以下两种方式显示 title 元素的内容&#xff1a…

学弟让我帮忙写一个学生管理系统的后端,我直接上科技

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、飞算AI简介 二、系统开发 2.1 需求提出 2.2 系统模块的设计 2.3 数据库表格设计 2.4 接口规范设计 2.5 源码生成 三、总结 学弟这两天有一个小组合作的任务&#xff0c;应该是培训吧要写一个学生管理…

《P3038 [USACO11DEC] Grass Planting G》

题目描述 给出一棵有 n 个节点的树&#xff0c;有 m 个如下所示的操作&#xff1a; 将两个节点之间的 路径上的边 的权值均加一。 查询两个节点之间的 那一条边 的权值&#xff0c;保证两个节点直接相连。 初始边权均为 0。 输入格式 第一行两个整数 n,m&#xff0c;含义…

NestJS

文章的地址 NestJShttps://equinox-primrose-ceb.notion.site/NestJS-22d4b8031e0f80b39fc7fe1ff111f802 不产生测试的.spec.ts文件的配置 "generateOptions": {"spec": false }创建模型 nest g m xx 创建服务 nest g s xx 创建处理 nest g c xx CRU…

vue入门学习教程

一、介绍 vue是一款用于构建用户界面的 JavaScript 框架。基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。 二、使用和安装 方法1&#xff1a;在html代码中直接使用<script>导入&…

C++类对象多态基础语法【超详细】

文章目录前言1. 虚函数1.1 现象1.2 多态1.3 析构函数1.4 override和final1.5 重载、隐藏、重写对比2. 抽象类2.1 抽象类特性2.2 抽象类的应用场景3. 多态实现的底层原理4. 静态绑定和动态绑定5. 总结前言 多态是面向对象三大特性之一&#xff0c;也是细节最多的语法之一。学习…

Flask 入门到实战(3):用 SQLAlchemy 优雅操作数据库

深入理解 Flask ORM&#xff1a;用 SQLAlchemy 优雅操作数据库一、前言&#xff1a;什么是 ORM&#xff1f;为什么要用它&#xff1f; 传统数据库操作要写 SQL&#xff0c;比如&#xff1a; SELECT * FROM users WHERE id 1;而使用 ORM 后&#xff0c;你可以这样写&#xff1a…

源表=电源+数字表?一文看懂SMU源表 2025-04-14

源表(Source Meter Unit, SMU)广泛用于半导体器件、材料、医疗、发光器件与光通信等行业,测量器件的伏安(I-V)特性曲线、绝缘材料的电阻值(电阻率)、电容的绝缘电阻(漏电流)、光电器件的暗电流或者L-I-V等。 源表的名称已经清晰的告诉我们,它包含了高精度电源输出和…

单片机STM32F103:DMA的原理以及应用

STM32F103系列微控制器&#xff08;基于ARM Cortex-M3内核&#xff09;集成了**DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;**控制器&#xff0c;用于在存储器与外设、存储器与存储器之间高效传输数据&#xff0c;减少CPU的干预&#xff0c;从而…