Skip to main content
 Web开发网 » 操作系统 » linux系统

机器学习有哪些好的DEMO可以用来快速入门?

2021年10月17日7100百度已收录

有个很简单的机器学习Demo,我们可以使用MNIST数据集在10分钟内进行图像分类,当您开始使用神经网络学习深度学习时,您会意识到最强大的受监督的深度学习技术之一就是卷积神经网络(简称为“ CNN”)。CNN的最终结构实际上与规则神经网络(RegularNets)非常相似,其中存在具有权重和偏差的神经元。另外,就像在RegularNets中一样,我们在CNN中使用损失函数(例如交叉熵或softmax)和激活函数(例如adam)。另外,在CNN中,还包括卷积层,池化层和全连接层。CNN主要用于图像分类,尽管您可能会发现其他应用领域,例如自然语言处理等等。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第1张

CNN中的图层我们能够在卷积神经网络中使用许多不同的层。但是,卷积、池化和全连接层是最重要的。因此,在实现它们之前,我将快速介绍这些层。

卷积层

卷积层是我们从数据集中的图像中提取特征的第一层。由于像素仅与相邻像素和紧密像素相关,因此卷积允许我们保留图像不同部分之间的关系。卷积基本上是使用较小的像素过滤器对图像进行过滤,以减小图像的大小,而不会丢失像素之间的关系。当我们通过使用步幅为1x1的3x3滤镜(每步偏移1个像素)将卷积应用于5x5图像时。我们最终将获得3x3的输出(复杂度降低了64%)。

池化层

构造CNN时,通常在每个卷积层之后插入池化层,以减小表示的空间大小,从而减少参数计数,从而降低计算复杂度。此外,合并层还有助于解决过度拟合问题。基本上,我们选择池大小以通过选择这些像素内的最大值,平均值或总和值来减少参数数量。最大池化是最常见的池化技术之一,可以通过以下方式进行演示:

全连接层

一个完全连接的网络是我们的CNN,其中每个参数相互链接,以确定每个参数在标签上的真实关系和效果。由于卷积和池化层大大降低了时空复杂度,因此我们可以最终构建一个完全连接的网络来对图像进行分类。一组完全连接的层如下所示:

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第2张

既然您对我们将要使用的各个层有了一些了解,我认为现在该分享一个完整的卷积神经网络的概貌。

现在,您有了可以构建的用于图像分类的卷积神经网络的概念,我们可以获得用于分类的最陈词滥调的数据集:MNIST数据集,它代表改良的美国国家标准技术研究院数据库。是一个庞大的手写数字数据库,通常用于训练各种图像处理系统。

下载Mnist数据MNIST数据集是用于图像分类的最常见数据集之一,可从许多不同来源访问。实际上,甚至Tensorflow和Keras都允许我们直接从其API导入和下载MNIST数据集。因此,我将从以下两行开始,以在Keras API下导入tensorflow和MNIST数据集。

NIST数据库包含60,000张训练图像和10,000张测试图像,这些图像是从美国人口普查局员工和美国高中学生那里拍摄的。因此,在第二行中,我将这两个组分别作为训练和测试,并且还分离了标签和图像。x_train和x_test部分包含灰度RGB代码(从0到255),而y_train和y_test部分包含从0到9的标签,这些标签代表它们实际的编号。为了形象化这些数字,我们可以从matplotlib获得帮助。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第3张

当我们运行上面的代码时,我们将获得RGB代码的灰度可视化效果,如下所示。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第4张

建立卷积神经网络我们将使用高级Keras API构建模型,该API在后端使用TensorFlow或Theano。我想提到的是,有几种高级TensorFlow API,例如Layers,Keras和Estimators,它们可以帮助我们创建具有高级知识的神经网络。但是,由于它们的实现结构各不相同,因此可能会造成混乱。因此,即使它们都使用了张量流,但如果您看到的是相同神经网络的完全不同的代码,这就是原因。我将使用最直接的API,即Keras。因此,我将从Keras导入顺序模型并添加Conv2D,MaxPooling,Flatten,Dropout和Dense图层。我已经讨论过Conv2D,Maxpooling和Dense层。此外,Dropout层通过在训练时忽略某些神经元来对抗过度拟合,而Flatten层在构建完全连接的层之前将2D数组展平为1D数组。

我们可以为第一个Dense层尝试任何数字;但是,由于我们有10个数字类别(0、1、2,…,9),因此输出层必须具有10个神经元。您可以始终在第一个Dense层中尝试内核大小,池大小,激活函数,丢失率和神经元数量的实验,以获得更好的结果。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第5张

编译和拟合模型使用上面的代码,我们创建了一个未经优化的空CNN。现在是时候为优化器设置一个使用度量的给定损失函数。然后,我们可以使用火车数据拟合模型。我们将使用以下代码来完成这些任务:

您可以尝试使用激活函数,损失函数,调参等等。但是,我可以说adam通常胜过其他激活函数。我不确定您是否可以更改多类分类的损失函数。请随意在下面进行实验和评论。这样简单的测可以达到98–99%的测试精度。由于MNIST数据集不需要大量的计算能力,因此您也可以轻松地尝试好几次训练试试看。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第6张

评估模型最后,您可以使用一行代码通过x_test和y_test评估训练后的模型:

model.evaluate(x_test, y_test)对于一个如此简单的模型,结果是相当不错的。

机器学习有哪些好的DEMO可以用来快速入门?  机器学习 第7张

评估显示,测试仪的准确性为98.5%!

通过这种基本模型,我们达到了98.5%的准确性。坦率地说,在许多图像分类案例中(例如,对于自动驾驶汽车),我们甚至不能容忍0.1%的误差,因为作为类比,这就像在1000例案例中虽然导致1次事故但很严重一样。但是,对于我们的第一个模型,这结果已经相当不错了。

评论列表暂无评论
发表评论
微信