使用python在GPU上构建和训练卷积神经网络

使用python在GPU上构建和训练卷积神经网络,第1张

我将对代码进行补充演练,以构建在数据集上训练的任何类型的图像分类器。在这个例子中,我将使用花卉数据集,其中包括102种不同类型的花。需要数据集和代码都可以私信我。

Pytorch是机器学习和Python上的免费软件包,非常易于使用。语法模拟numpy,因此,如果你在python中有一些科学计算经验,那么会相当有用的。只需几行代码,就可以下载预先训练的数据集,使用定义的变换对图像进行标准化,然后运行训练。

创建和扩充数据集

为了增加数据集,我使用' google_images_download'API 从互联网上下载了相关图像。显然,您可以使用此API不仅可以扩充现有数据集,还可以从头开始创建自己的数据集。

确保从图像中挑选出异常值(损坏的文件或偶然出现的无关图像)。

图像标准化

为了使图像具有相同的大小和像素变化,可以使用pytorch的transfors模块:

转移学习

从头开始训练的模型可能不是最明智的选择,因为有许多网络可用于各种数据集。简单地说,像edge-和其他简单形状检测器等低级特征对于不同的模型是相似的,即使clasificators是针对不同目的进行训练的。在本项目中,我使用了一个预训练网络Resnet152,只有最后一个完全连接的层重新用于新任务,即使这样也会产生相当好的效果。

在这里,我将除最后一层之外的所有层都设置为具有固定权重(requires_grad = False),因此只有最后层中的参数将通过梯度下降进行更新。

训练模型

下面介绍一下进行训练的函数:

如何获得GPU?

当然,对CPU的训练太慢了。根据我自己的经验,在GPU仅需要一个小时就可以完成12次训练周期,但是在CPU上相同数量的训练周期可能需要花费大约15个小时。

如果您没有本地可用的GPU,则可以考虑使用云GPU。为了加速CNN的训练,我使用了floydhub(>

数据挖掘(Data Mining)是指通过大量数据集进行分类的自动化过程,以通过数据分析来识别趋势和模式,建立关系来解决业务问题。换句话说,数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

原则上讲,数据挖掘可以应用于任何类型的信息存储库及瞬态数据(如数据流),如数据库、数据仓库、数据集市、事务数据库、空间数据库(如地图等)、工程设计数据(如建筑设计等)、多媒体数据(文本、图像、视频、音频)、网络、数据流、时间序列数据库等。也正因如此,数据挖掘存在以下特点:

(1)数据集大且不完整
数据挖掘所需要的数据集是很大的,只有数据集越大,得到的规律才能越贴近于正确的实际的规律,结果也才越准确。除此以外,数据往往都是不完整的。
(2)不准确性
数据挖掘存在不准确性,主要是由噪声数据造成的。比如在商业中用户可能会提供假数据;在工厂环境中,正常的数据往往会收到电磁或者是辐射干扰,而出现超出正常值的情况。这些不正常的绝对不可能出现的数据,就叫做噪声,它们会导致数据挖掘存在不准确性。
(3)模糊的和随机的
数据挖掘是模糊的和随机的。这里的模糊可以和不准确性相关联。由于数据不准确导致只能在大体上对数据进行一个整体的观察,或者由于涉及到隐私信息无法获知到具体的一些内容,这个时候如果想要做相关的分析 *** 作,就只能在大体上做一些分析,无法精确进行判断。
而数据的随机性有两个解释,一个是获取的数据随机;我们无法得知用户填写的到底是什么内容。第二个是分析结果随机。数据交给机器进行判断和学习,那么一切的 *** 作都属于是灰箱 *** 作。

神经网络:
神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13367207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存