近年来,人工智能 (AI) 获得了极大的普及。
如果您是软件工程师、计算机科学家或一般的数据科学爱好者,那么您可能会对该领域提供的图像处理、模式识别和对象检测的惊人应用感兴趣。
您可能听说过的最重要的 AI 子领域是深度学习。 该领域专注于以人脑功能为模型的强大算法(计算机程序指令),称为 神经网络.
在本文中,我们将介绍神经网络的概念以及如何使用以下方法构建、编译、拟合和评估这些模型 蟒蛇.
神经网络
神经网络或 NN 是一系列模仿人脑生物活动的算法。 神经网络由节点组成,也称为神经元。
垂直节点的集合称为层。 该模型由一个输入、一个输出和多个隐藏层组成。 每一层都由节点组成,也称为神经元,在这些节点中进行计算。
在下图中,圆圈代表节点,节点的垂直集合代表层。 该模型分为三层。
一层的节点通过传输线连接到下一层,如下所示。
我们的数据集由标记数据组成。 这意味着每个数据实体都被分配了一个特定的名称值。
因此,对于动物分类数据集,我们将猫和狗的图像作为我们的数据,以“猫”和“狗”作为我们的标签。
重要的是要注意,标签需要转换为数值才能让我们的模型理解它们,所以我们的动物标签变成猫的“0”和狗的“1”。 数据和标签都通过模型传递。
学习
数据一次被提供给模型一个实体。 这些数据被分解成块并通过模型的每个节点。 节点对这些块执行数学运算。
您不需要了解本教程的数学函数或计算,但了解这些模型的工作原理很重要。 在一层中进行一系列计算后,将数据传递到下一层,依此类推。
完成后,我们的模型会在输出层预测数据标签(例如,在动物分类问题中,我们得到猫的预测“0”)。
然后模型继续将此预测值与实际标签值进行比较。
如果值匹配,我们的模型将采用下一个输入,但如果值不同,模型将计算两个值之间的差异,称为损失,并调整节点计算以在下一次生成匹配的标签。
深度学习框架
要在代码中构建神经网络,我们需要导入 深度学习框架 称为使用我们的集成开发环境 (IDE) 的库。
这些框架是一组预先编写的函数,它们将在本教程中为我们提供帮助。 我们将使用 Keras 框架来构建我们的模型。
Keras 是一个 Python 库,它使用名为 Tensorflow 以简单的序列模型的形式轻松创建 NN。
Keras 还附带了自己的现有模型,这些模型也可以使用。 在本教程中,我们将使用 Keras 创建自己的模型。
您可以从以下位置了解有关此深度学习框架的更多信息 Keras 网站.
构建神经网络(教程)
让我们继续使用 Python 构建神经网络。
问题陈述
神经网络是一种基于人工智能的问题的解决方案。 在本教程中,我们将介绍 Pima Indians Diabetes Data,该数据可用 点击此处.
国际自盟 机器学习已经编译了这个数据集 并包含印度患者的医疗记录。 我们的模型必须预测患者是否在 5 年内发生糖尿病。
加载数据集
我们的数据集是一个名为“diabetes.csv”的单个 CSV 文件,可以使用 Microsoft Excel 轻松操作。
在创建模型之前,我们需要导入数据集。 使用以下代码,您可以做到这一点:
将熊猫作为pd导入
数据 = pd.read_csv('diabetes.csv')
x = data.drop(“结果”)
y = 数据[“结果”]
在这里我们使用 熊猫 为了能够操作我们的 CSV 文件数据,read_csv() 是 Pandas 的一个内置函数,它允许我们将文件中的值存储到一个名为“data”的变量中。
变量 x 包含我们的数据集,没有结果(标签)数据。 我们通过删除 x 的标签的 data.drop() 函数来实现这一点,而 y 仅包含结果(标签)数据。
建立顺序模型
第 1 步:导入库
首先,我们需要导入 TensorFlow 和 Keras,以及我们模型所需的某些参数。 下面的代码允许我们这样做:
将tensorflow作为tf导入
从张量流导入 keras
从 tensorflow.keras.models 导入顺序
从 tensorflow.keras.layers 导入激活,密集
从 tensorflow.keras.optimizers 导入 Adam
从 tensorflow.keras.metrics 导入 categorical_crossentropy
对于我们的模型,我们正在导入密集层。 这些是全连接层; 即,一层中的每个节点都与下一层中的另一个节点完全连接。
我们也在导入一个 激活 缩放发送到节点的数据所需的功能。 优化器 还进口了以减少损失。
Adam 是一个著名的优化器,它使我们的模型更新节点计算更有效,以及 categorical_crossentropy 是 我们将使用的损失函数的类型(计算实际标签值和预测标签值之间的差异)。
第 2 步:设计我们的模型
我正在创建的模型有一个输入层(有 16 个单元)、一个隐藏层(有 32 个单元)和一个输出层(有 2 个单元)。 这些数字不是固定的,将完全取决于给定的问题。
设置正确的单元数和层数是一个可以通过练习加班改进的过程。 激活对应于我们将在数据通过节点之前对其执行的缩放类型。
Relu 和 Softmax 是该任务的著名激活函数。
模型=顺序([
密集(单位= 16,输入形状=(1,),激活='relu'),
密集(单位= 32,激活='relu'),
密集(单位 = 2,激活 = 'softmax')
])
以下是模型的摘要应如下所示:
训练模型
我们的模型将分两步进行训练,第一步是编译模型(将模型放在一起),第二步是在给定的数据集上拟合模型。
这可以使用 model.compile() 函数和 model.fit() 函数来完成。
model.compile(optimizer = Adam(learning_rate = 0.0001),loss = 'binary_crossentropy',metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
指定“准确度”指标可以让我们在训练期间观察模型的准确度。
由于我们的标签是 1 和 0 的形式,我们将使用二进制损失函数来计算实际标签和预测标签之间的差异。
数据集也被分成 10 个批次(batch_size),并将通过模型 30 次(epochs)。 对于给定的数据集,x 将是数据,y 将是与数据对应的标签。
使用预测测试模型
为了评估我们的模型,我们使用 predict() 函数对测试数据进行预测。
预测 = model.predict(x)
就是这样!
你现在应该对 深度学习 应用程序,神经网络,它们一般如何工作以及如何在 Python 代码中构建、训练和测试模型。
我希望本教程能够为您提供创建和部署您自己的深度学习模型的起点。
如果文章有帮助,请在评论中告诉我们。
发表评论