深度学习经典入门Demo实战案例分享人工智能

神经元:神经元模型是一个包含输入,输出与计算功能的模型。

前向传播和反向传播:它是神经网络的基本运行方式,前向传播用于计算输出,反向传播用于更新网络参数。

激活函数:激活函数决定神经元的输出。学习不同的激活函数以及它们的作用。

损失函数:损失函数用于衡量模型的预测与实际结果之间的差异。了解不同的损失函数和它们的适用场景。

1.2深度学习框架

以下是一些常见的深度学习框架:

PyTorch:由Facebook开发的开源框架,前沿算法多为PyTorch版本,如果是你高校学生or研究人员,建议学这个。相对于TensorFlow,Pytorch在易用性上更有优势,更加方便调试。

1.3经典模型

循环神经网络(RNN):用于序列数据建模和自然语言处理任务的常用模型,传统神经网络的结构比较简单,通常为:输入层–隐藏层–输出层。

生成对抗网络(GAN):用于生成新的数据样本的模型。是近年来深度学习领域的一个热点方向。GAN并不指代某一个具体的神经网络,而是指一类基于博弈思想而设计的神经网络。GAN由两个分别被称为生成器(Generator)和判别器(Discriminator)的神经网络组成。其中,生成器从某种噪声分布中随机采样作为输入,输出与训练集中真实样本非常相似的人工样本;判别器的输入则为真实样本或人工样本,其目的是将人工样本与真实样本尽可能地区分出来。生成器和判别器交替运行,相互博弈,各自的能力都得到升。理想情况下,经过足够次数的博弈之后,判别器无法判断给定样本的真实性,即对于所有样本都输出50%真,50%假的判断。此时,生成器输出的人工样本已经逼真到使判别器无法分辨真假,停止博弈。这样就可以得到一个具有“伪造”真实样本能力的生成器。

二、经典入门Demo实战

2.1深度学习原理

这里定义一个概念,输入和输出,输入就是已知的信息,输出就是由输入获得的认知的结果。我们将一个从已有的信息,通过计算、判断和推理得到结果的认知过程统称为“学习”。

如何让机器也可以进行学习呢?学术界为此提出了“神经网络”的概念。人脑中负责活动的基本单元是神经元,这些神经元互相连接成一个被称为神经网络的庞大结构。由此,学术界模仿人脑“神经网络“建立一个人工神经网络(ANN),我们通常也简称为神经网络。

将1+1=2用神经网络可以表示为如下结构。

我们将“1”、“+”、“1”与“2”同时作为输入不断训练神经网络(不断告诉机器1+1=2),在训练若干次后,神经网络将会学会“1+1=2”。同样的,我们将1+2=3放入神经网络中去,不断进行训练,若干次后神经网络也将学会1+2=3。如此循环往复,我们可以教会神经网络进行加法运算,进而可以让神经网络学会算术运算,我们把这个过程称为深度学习。

2.2一个手写数字的识别的实现过程Demo

下面我将通过一个手写数字的识别的案例来进一步讲解深度学习,带领大家体验一次完整的深度学习实现的全过程。

假设现在我们手上很多张手写的数字图片,需要通过深度学习让机器“认识”这些图片上的数字,然后告诉我们每一张图片上的数字是多少。

那么我们应该如何实现呢?总体的思路如下:

我们先拿出6万张图片给机器进行学习(需要告诉机器每一个图片上写的是哪一个数字)。

在学习后,再拿出1万张机器没“见过”的图片给它进行识别,让它告诉我们,图片上写的是哪一个数字。

重复上面的过程,直到机器可以认识手写的数字。

至此,完成便可实现手写数字识别这一效果。

程序执行步骤:

①学习6万张图片上的数字

②用1万张图片测试机器的学习效果(这1万张不参与①的训练)

③重复①、②

现在你需要做的是:了解每一个模块实现的功能,从整体上把握整份代码。

开发环境:

编译器:JupyterNotebook

深度学习框架:TensorFlow2.4.1

1.准备数据

导入数据

可视化

这里我们用第三方库matplotlib输出手写数字图片,看看我们的手写数字(数据集)是什么样子的。

调整图片格式

需要将图片调整为特定格式程序才可以进行学习

#调整数据到我们需要的格式train_images=train_images.reshape((60000,28,28,1))test_images=test_images.reshape((10000,28,28,1))#输出数据sahpetrain_images.shape,test_images.shape,train_labels.shape,test_labels.shape((60000,28,28,1),(10000,28,28,1),(60000,),(10000,))

(60000,28,28,1):表示为:60000张28*28的灰度图片,最后一个数字为1时,代表灰度图片;为3时代表彩色图片。

2.构建神经网络模型

我们将图片输入到网络,图片首先会将其数字化,紧接着通过卷积层提取图片上这个数字的特征,最后通过数字的特征判断这个数字是哪一个。结构图如下:

上面的结构图中,向我们展示了五层结构,那么每一层具体是用来做什么的呢?

输入层:用于将数据输入到神经网络

卷积层:使用卷积核提取图片特征,卷积核相当于一个小型的“特征提取器”

Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡

全连接层:起到“特征提取器”的作用

输出层:输出结果

卷积核与全连接层从某些方面上讲都有提取特征的作用,但是所采用的方法是不同的。

这部分为深度学习的核心内容,就是构建模型,先不管这快,现在我们主要任务是跑通整个程序,从整体上了解一下深度学习是什么。

model=models.Sequential([#layers.Conv2D(32,(3,3),input_shape=(28,28,1)),#卷积层:提取图片特征layers.Flatten(),#Flatten层:将二维图片压缩为一维形式layers.Dense(100),#全连接层:将特征进行进一步压缩layers.Dense(10)#输出层:输出结果])#打印网络结构

3.编译模型

在这一步,我们需要设置模型的优化器,损失函数、评价函数:

优化器:帮助模型更好的训练

损失函数:用于估量预测值与真实值的不一致程度

评价函数:评价模型的质量

4.训练模型

将数据传入模型进行训练,传入的数据分为训练数据、验证数据两部分。训练数据(训练集)用于训练模型,验证数据(验证集)用于监测模型的效果。epochs表示模型的学习轮数(次数)。

"""train_images:训练数据的图片train_labels:训练图片对应的标签epochs:训练轮数validation_data:验证数据"""history=model.fit(train_images,train_labels,epochs=3,validation_data=(test_images,test_labels))

5.预测

#打印我们想要进行预测的图片plt.imshow(test_images[1])

输出测试集中第一张图片的预测数组

这组浮点数对应着0~9,最大的浮点数对应着的数字就是神经网络的预测结果。

importnumpyasnp#输出预测结果pre_num=np.argmax(pre[1])print("模型的预测结果为:",pre_num)模型的预测结果为:2

总结

我们通过算术学习、手写数字识别了解了什么是深度学习,也用TensorFlow2实现了手写数字识别,从整体上了解了一个深度学习程序是什么样子的,应该有哪些步骤

THE END
1.人工智能学习框架分类及特点初步成型:2010年左右,Theano成首个流行深度学习框架,开启GPU加速先河。 蓬勃发展:2015 - 2016年间,TensorFlow和PyTorch相继发布,前者由Google推出,后者源于Facebook,二者分别凭借强大计算能力和动态图机制成为业界宠儿。 多样化发展:2017年后,Keras凭借易用性崭露头角,PaddlePaddle等国产框架也开始崛起。 https://blog.csdn.net/noboxihong/article/details/144401134
2.深度学习轻量级神经网络模型,嵌入式微小设备也能实时检测然而,这些网络虽然具有深度上下文理解,但计算要求非常高,因此需要消耗数百瓦特功率的强效和昂贵硬件,使其不适合大多数IoT处理器。这促使学者们提出使用模型量化方法来实现移动和低功耗嵌入式设备上的微机器学习(TinyML)。虽然轻量级神经网络的进步使得在图像分类等任务上取得了很大的进展[11],最近开始在简化目标检测任务上https://blog.51cto.com/u_15671528/12791754
3.在线深度学习:在数据流中实时学习深度神经网络机器之心与经常在浅层神经网络中最优化一些凸性目标函数的传统在线学习(例如,线性的/基于核的假设)不一样的是,在线深度学习(ODL)更加具有挑战性,因为深度神经网络中的目标函数的优化是非凸的,而且常规的反向传播在实际过程中也不能很好地奏效,尤其是在线学习的设置中。在这篇论文中,我们提出了一种新的在线深度学习框架,https://www.jiqizhixin.com/articles/2017-12-30
4.国产开源深度学习框架,深度学习,简单开发3分钟看懂旷视深度学习框架MegEngine 立即观看 MegStudio 在线深度学习开发平台 MegStudio基于-MegEngine框架,提供高级免费算力、 模型库、公开项目与数据集、在线模型开发环境 开始使用 MegEngine 深度学习,简单开发 训练推理一体,缩短研发周期 超低硬件门槛,降低使用成本 https://megengine.org.cn/
5.武汉大学智能遥感解译LuoJiaNET框架与LuoJiaSET样本库正式上架武汉大学在国家自然科学基金委重大研究计划集成项目的支持下,与华为MindSpore框架团队共同研发了全球首个遥感影像智能解译专用深度学习框架武汉.LuoJiaNET和业界最大遥感影像样本库LuoJiaSET,并在华为昇思社区上线。在中国科学院院士龚健雅教授指导下,项目组建了以胡翔云教授为项目负责人,张觅副研究员、姜良存副研究员分别为Luhttps://rsgis.whu.edu.cn/info/1252/10354.htm
6.百度飞桨能做什么百度飞桨平台功能介绍超大规模深度学习模型训练技术 飞桨突破了超大规模深度学习模型训练技术,领先其它框架实现了千亿特征、万亿参数、数百节点并行训练的能力,解决了超大规模深度学习模型的在线学习和部署难题,实现了超万亿规模参数模型的实时更新。此外,飞桨还覆盖支持包括模型并行、流水线并行在内的最广泛并行模式和加速策略,引领了大规模分布式https://shouyou.3dmgame.com/gl/232761.html
7.深度学习实战篇:12大深度学习开源框架汇总详解(上)在人工智能的浪潮中,深度学习作为核心技术之一,正在不断地推动科技地进步。 深度学习框架作为实现深度学习算法的工具,其重要程度不言而喻。完善、开源的框架社区生态,也为深度学习的研究和应用提供了强大的支持。 然而,面对众多的深度学习框架,如何选择一款最适合你的开源框架,成为每个深度学习开发人员的必经之路。 http://www.360doc.com/content/24/0807/08/50382475_1130659978.shtml
8.Tensorflow:实战Google深度学习框架(豆瓣)TensorFlow是谷歌2015年开源的主流深度学习框架,目前已在谷歌、优步(Uber)、京东、小米等科技公司广泛应用。《Tensorflow实战》为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以最快、最有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍https://book.douban.com/subject/26976457
9.主流深度学习框架CNTK在Azure GPU Lab提供了最高效的分布式计算性能。目前,CNTK对ARM架构的缺乏支持,限制了其在移动设备上的功能。 除了上述列出的深度学习框架之外,还有一些框架在下面的列表中。 随着深度学习框架的不断成熟,将会出现TensorFlow,Caffe 2和MXNet之间的竞争是预料之中的。https://cloud.tencent.com/developer/article/1464586
10.深度学习框架——Darknet·Taobotics通过视频的演示,我们可以了解到 Darknet 能够将图像上的物体选中并识别出来。本小节将介绍如何将开源项目深度学习框架 darknet移植到我们 handsfree ros机器人上,让我们的 handsfree ros 机器人通过摄像头完成简单的图像识别。 本文将简单的引导如何在我们的 handsfree ros机器人上使用 Darknet ,以及用下载好的模型来https://docs.taobotics.com/docs/handsfree/handsfree/Tutorial/Advanced/Object-Recognition/doc.html
11.什么是深度学习?MicrosoftAzure了解深度学习的定义、深度学习的用途及其工作原理。获取有关神经网络和 BERT NLP 的工作原理及其优点的信息。https://azure.microsoft.com/zh-cn/overview/what-is-deep-learning
12.深度学习平台KDL购买价格功能优势嘲案例深度学习平台KDL(Kingsoft Deep Learning)金山云为您提供深度学习平台服务,购买价格、功能优势、运用场景、案例文档、帮助您解决深度学习中的各类问题。https://www.ksyun.com/proservice/kdl
13.cubestudio开源云原生一站式机器学习/深度学习/大模型AI平台传统机器学习: ray-sklearn分布式, xgb单机训练推理 传统机器学习算法: ar/arima时间序列算法/random-forest/random-forest-regression/lr/lightgbm/knn/kmean/gbdt/decision-tree/pca/lda/catboost/xgb/超参搜索 分布式深度学习框架: tf/pytorch/mxnet/horovod/paddlejob/mindspore分布式训练 https://github.com/tencentmusic/cube-studio
14.彻底掌握ONNXRUNTIME框架深度学习模型部署看它!ONNXRUNTIME是主流的深度学习部署框架之一,支持ONNX格式模型在CPU、GPU、ARM等不同硬件平台上加速推理,支持C++、Python、Java、C#、JS等不同语言SDK。C++版本安装包下载如下: 不同版本的ONNXRUNTIME安装文件下载地址: https://github.com/microsoft/onnxruntime/tags https://www.eet-china.com/mp/a340798.html
15.深度学习(Deeplearning)综述5. 通道剪枝(channel pruning):结构或非结构剪枝:deep compression, channel pruning 和 network slimming等; 在CNN网络中,通过对特征图中的通道维度进行剪枝,可以同时降低模型大小和计算复杂度,并且压缩后的模型可以直接基于现有的深度学习框架进行部署。 6. 权重稀疏化(weight sparsification):通过对网络权重引入稀疏性https://www.jianshu.com/p/c8a46f00b06d