自定义神经网络一之Tensor和神经网络

news2025/1/23 9:06:23

文章目录

    • 前言
    • Tensor
    • 神经网络
      • 深度神经网络DNN
      • 卷积神经网络CNN
        • 卷积神经网络有2大特点
      • 循环神经网络RNN
      • 残差网络ResNet
      • Transformer
        • 自我注意力机制
        • 并行效率
    • 总结

前言

神经网络是AI界的一个基础概念,当下火热的神经网络例如RNN循环神经网络或者CNN卷积神经网络,都是从基础的神经网络发展而来的。
本系列博客的主要目标是自定义一个神经网络,并把训练结果保存到模型文件。想要完成这个目标,了解基础的概念必不可少。
本章主要是介绍Tensor和神经网络基础概念,以及常见的神经网络特点和应用场景等。

Tensor

参考:张量(Tensor):神经网络的基本数据结构
具体的内容可以参考知乎大佬的文章,我们在自定义神经网络的时候,一般用numpy的ndarray类型即可,也就是自己定义多维数组来作为"Tensor"。 相比于Pytorch等训练框架的Tensor来说,ndarray只能在CPU侧进行运算,且没有自动微分等高级特性,不过也足够用了。
Tensor张量是可以说是神经网络运算的基石,一方面是可以代表多维的数据,例如我们常用的二维数组,三维数组,另一方面当下火热的训练框架pytorch和tensorflow都重新定义了Tensor对象,使Tensor对象可以利用GPU的并行计算能力,以及拥有自动微分等特性。

神经网络

参考:什么是神经网络? - 知乎
神经网络模型–数学建模_建立基于神经网络的数学模型-CSDN博客

现在网络上关于神经网络的文章已经很多了,大家根据参考链接学习即可。
简单来说,神经网络就是模拟人的大脑神经进行信息处理的数学模型。
单层神经网络:
image.png
多层神经网络:
image.png

深度神经网络DNN

2006年,Hinton利用预训练方法缓解了局部最优解问题,将隐含层推动到了7层(参考论文:Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.),神经网络真正意义上有了“深度”,由此揭开了深度学习的热潮。这里的“深度”并没有固定的定义——在语音识别中4层网络就能够被认为是“较深的”,而在图像识别中20层以上的网络屡见不鲜。为了克服梯度消失,ReLU、maxout等传输函数代替了 sigmoid,形成了如今 DNN 的基本形式。单从结构上来说,全连接的DNN和上图的多层感知机是没有任何区别的。值得一提的是,今年出现的高速公路网络(highway network)和深度残差学习(deep residual learning)进一步避免了梯度弥散问题,网络层数达到了前所未有的一百多层(深度残差学习:152层)

卷积神经网络CNN

参考:
CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客
图解CNN:通过100张图一步步理解CNN-CSDN博客
卷积神经网络和深度神经网络的区别是什么? - 知乎

具体的看链接吧,讲的很清楚。
简单来说,CNN主要用于图像识别领域,主要解决特征提取的问题。通过卷积和池化来减少参数量。

卷积神经网络有2大特点
  • 能够有效的将大数据量的图片降维成小数据量
  • 能够有效的保留图片特征,符合图片处理的原则

循环神经网络RNN

参考:
如何理解RNN(循环神经网络),能举一些简单的例子吗? - 知乎
(新手向)能否简单易懂的介绍一下RNN(循环神经网络)? - 知乎
https://dennybritz.com/posts/wildml/recurrent-neural-networks-tutorial-part-1/
简单来说,RNN被称为循环,因为它对序列列的每个元素执行相同的任务,并且基于先前的计算进行输出。RNN的另一个优点是它具有“记忆”,它可以收集到目前为止已经计算的信息。RNN常用于NLP领域。
RNN 从始至终意图解决的都是“记忆”问题,而非 CNN 所解决的“提取”问题。两者并不冲突,甚至还可以适度融合,即组合形成 CNN+RNN 融合模型(Hybrid Model)

残差网络ResNet

参考:
对ResNet本质的一些思考
ResNet原理与性能分析:解空间与优化视角
ResNet的基础:残差块的原理
在深度学习中,为了增强模型的学习能力,网络层会变得越来越深,但是随着深度的增加,也带来了比较一些问题,主要包括:

  • 模型复杂度上升,网络训练困难;
  • 梯度消失/梯度爆炸
  • 网络退化,也就是说模型的学习能力达到了饱和,增加网络层数并不能提升精度了。

为了解决网络退化问题,何凯明大佬提出了深度残差网络来解决以上问题。 具体的可以参考链接进行学习。

Transformer

网络上关于Transformer的文章也很多,给大家推荐几篇学习的文章。
参考:
ChatGPT牛逼,是因为Transformer模型牛逼…-CSDN博客
https://jalammar.github.io/illustrated-transformer/
(六十)通俗易懂理解——Transformer原理解析
学习实战的库: https://github.com/google/trax

以下是Transformer的简介
2017年12月-Tranformer颠覆性的Tranformer架构出世了!
Googl机器翻译团队在年底的顶级会议NIPS上发表了里程碑式的论文《Attention is all you need》,提出只使用自注意力(Self Attention)机制来训练自然语言模型,并给这种架构起了个霸气的名字:Transformer。
所谓"自我注意力"机制,简单说就是只关心输入信息之间的关系,而不再关注输入和对应输出的关系。和之前大模型训练需要匹配的输入输出标注数据相比,这是一个革命性的变化。
**Transformer彻底抛弃了传统的CNN和RNN等神经网络结构。**在这篇论文发布之前,主流AI模型都基于CNN卷积神经网络和RNN循环神经网络(recurrent neural network); 而之后,便是Transformer一统天下。
它具有两点无敌的优势:

自我注意力机制

让模型训练只需使用未经标注的原始数据,而无需再进行昂贵的的人工标注(标注输入和对应输出)。
基于自我注意力机制的Transformer模型的出现是革命性的, 最最重要的一点, 它能实现自我监督学习. 所谓自我监督, 就是不需要标注的样本, 使用标准的语料或者图像, 模型就能学习了.

在Tranformer出现之前, 我们要训练一个深度学习模型, 必须使用大规模的标记好的数据集合来训练神经网络. 对数据进行标注只能人工进行, 金钱和时间成本都相当高.

并行效率

并行效率是之前的AI模型结构被一直诟病的地方。抛弃了传统CNN/RNN架构后,基于Transformer架构的大模型训练可以实现高度并行化,这大大提高了模型训练的效率;更不用说, Attention注意力机制只关注部分信息, 参数较少, 容易训练.

总结

以上简单介绍了一下神经网络的基础概念,以及目前业界常用的几种神经网络和适用的场景。详细介绍神经网络并非本博客的主要目标,本博客意在让有兴趣的同学了解一下,然后通过参考链接去进一步的学习。

接下来的几篇博客会总结一下模型的训练和推理,以及引申出的梯度的概念以及损失函数,激活函数的概念。最终目标是实现一个自定义神经网络,有体感的去训练和推理模型,达到解决实际问题的目标。

end

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

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

相关文章

【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)

目录 1.前言:顺序表回顾: 1.1顺序表的优缺点 2.主角----链表 2.1链表的概念 2.2定义一个单链表的具体实现代码方式 3.单链表对数据的管理----增删查改 3.1单链表的创建 3.2单链表的遍历实现 3.2.1利用遍历实现一个打印我们链表内容的函数的函数…

matlab 线性四分之一车体模型

1、内容简介 略 57-可以交流、咨询、答疑 路面采用公式积分来获得,计算了车体位移、非悬架位移、动载荷等参数 2、内容说明 略 3、仿真分析 略 线性四分之一车体模型_哔哩哔哩_bilibili 4、参考论文 略

SpringCloud微服务-Eureka注册中心

Eureka注册中心 文章目录 Eureka注册中心前言1、Eureka的作用2、搭建EurekaServer3、服务注册4、启动多个实例5、服务拉取 -实现负载均衡 前言 在服务调用时产生的问题: //2. 利用RestTemplate发起HTTP请求,查询user String url "http://localho…

排序算法之快速排序(挖坑法)

挖坑法的思想:记第一个数为key,要调整key的位置,使得左边的都要比key的小,右边的数都比key的大。 记录下关键字keybegin,把28那个位置挖坑holebegin 让end找到小于28(key)的数,把那…

docker-mysql:5.7安装

1、下载mysql:5.7镜像 [rootlocalhost ~]# docker search mysql (某个XXX镜像名字) [rootlocalhost ~]# docker pull mysql:5.7 按装之前查看一下是否按装过mysql。如果安装过会占用3306端口。 [rootlocalhost ~]# ps -ef | grep mysql 2、简单的安装 [rootlocalhost ~]# d…

STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例

STM32 合宙1.54“ 电子墨水屏(e-paper)驱动显示示例 📍相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏(e-paper)驱动显示示例》🔖程序是从GooDisplay品牌下同型号规格墨水屏的示例程序参考Ardui…

计算1/1+1/2+1/3+1/4+1/5...+1/100的值(C语言实现)

如何实现打印小数呢 这里我们需要把数值定义成为float或者double的类型&#xff0c;因为如果是int的话&#xff0c;就会直接取整&#xff0c;输出的结果就会变成0 int main() {float sum 0;int flg 1;for (int i 1; i < 100; i){sum 1.0 / i * flg;flg -flg;}printf(&…

蓝桥杯前端Web赛道-课程列表

蓝桥杯前端Web赛道-课程列表 题目链接&#xff1a;0课程列表 - 蓝桥云课 (lanqiao.cn) 题目要求如下&#xff1a; 分析题目我们发现其实就是需要我们手写一个分页的功能&#xff0c;根据题目的要求&#xff0c;分析如下 需要通过axios获取数据每页显示5条数据&#xff0c;默…

深度学习 精选笔记(3)线性神经网络-线性回归

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录&#xff1a; Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

Python 实现Excel自动化办公(中)

在上一篇文章的基础上进行一些特殊的处理&#xff0c;这里的特殊处理主要是涉及到了日期格式数据的处理&#xff08;上一篇文章大家估计也看到了日期数据的处理是不对的&#xff09;以及常用的聚合数据统计处理&#xff0c;可以有效的实现你的常用统计要求。代码如下&#xff1…

云计算时代的运维: 职业发展方向与岗位选择

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

常见的socket函数封装和多进程和多线程实现服务器并发

常见的socket函数封装和多进程和多线程实现服务器并发 1.常见的socket函数封装2.多进程和多线程实现服务器的并发2.1多进程服务器2.2多线程服务器2.3运行效果 1.常见的socket函数封装 accept函数或者read函数是阻塞函数&#xff0c;会被信号打断&#xff0c;我们不能让它停止&a…

基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小二乘正弦拟合 4.2 SNDR、SFDR 和 ENOB 计算 4.3 校正 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

vscode 如何连接 WSL (不能通过 IP 地址连接)

来源&#xff1a;https://www.cnblogs.com/wxdblog/p/17234342.html vscode (remote-ssh) 连接 WSL 不能使用 IP地址 连接&#xff0c;需要安装 WSL 扩展才行

《TCP/IP详解 卷一》第9章 广播和本地组播

目录 9.1 引言 9.2 广播 9.2.1 使用广播地址 9.2.2 发送广播数据报 9.3 组播 9.3.1 将组播IP地址转换为组播MAC地址 9.3.2 例子 9.3.3 发送组播数据报 9.3.4 接收组播数据报 9.3.5 主机地址过滤 9.4 IGMP协议和MLD协议 9.4.1 组成员的IGMP和MLD处理 9.4.2 组播路由…

【kubernetes】关于k8s集群的声明式管理资源

目录 一、声明式管理方法 二、资源配置清单管理 1、导出资源配置清单 2、修改资源配置清单并应用 2.1离线修改 2.2在线修改 三、通过资源配置清单创建资源对象 获取K8S资源配置清单文件模板&#xff1f; 关于配置清单常见的字段 方案一&#xff1a;手写yaml配置文件 …

Apache Paimon 主键表解析

Primary Key Table-主键表 1.概述 主键表是创建表时的默认表类型&#xff0c;用户可以插入、更新或删除表中的记录&#xff1b; 主键由一组列组成&#xff0c;这些列包含每条记录的唯一值&#xff1b; Paimon通过对每个桶中的主键排序来强制数据有序&#xff0c;允许用户在…

【README 小技巧】 展示gitee中开源项目start

【README 小技巧】 展示gitee中开源项目start <a target"_blank" hrefhttps://gitee.com/wujiawei1207537021/wu-framework-parent><img srchttps://gitee.com/wujiawei1207537021/wu-framework-parent/badge/star.svg altGitee star/></a>

2024年腾讯云4核8G5M云服务器并发量支持多少人在线?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…