神经网络是一种模仿人脑运作方式的人工智能算法。它们能够学习大量数据中的模式和关系,使其成为图像识别、自然语言处理和语音识别等任务的热门选择。在本文中,我们将讨论如何使用 Python 从头开始构建您自己的神经网络。
第 1 步:了解基础知识
在深入研究代码之前,深入了解神经网络背后的基本概念非常重要。神经网络由相互连接的节点或神经元层组成。每个神经元接收来自多个其他神经元的输入,并根据其激活函数产生输出。神经元之间的连接是加权的,这允许网络学习输入数据中的模式和关系。
训练神经网络的过程涉及调整连接的权重,以最小化预测输出与实际输出之间的误差。这是使用梯度下降等优化算法完成的。
第 2 步:设置环境
要在 Python 中构建神经网络,我们需要安装几个包。其中最重要的是 TensorFlow,这是一个由 Google 开发的流行的开源机器学习库。TensorFlow 提供了多种用于构建和训练神经网络的工具,以及用于常见任务的预构建模型。
要安装 TensorFlow,您可以使用 Python 包管理器 pip:
pip 安装张量流
您可能还想安装其他包,例如 NumPy、Pandas 和 Matplotlib,它们通常用于数据操作和可视化。
第 3 步:创建神经网络
现在我们已经设置好环境,可以开始构建神经网络了。在本教程中,我们将创建一个带有一个隐藏层的简单神经网络,以对 MNIST 数据集中的手写数字进行分类。
首先,我们将导入必要的包:
从tensorflow导入tensorflow作为tf从tensorflow导入keras 。keras导入图层
接下来,我们将定义神经网络的架构。我们将使用顺序模型,它允许我们一次添加一层。我们的网络将有一个包含 784 个节点的输入层(对应于 MNIST 数据集中的 28x28 像素图像)、一个包含 128 个节点的隐藏层和一个包含 10 个节点的输出层(对应于 10 个可能的数字)。
model = keras.Sequential([
layers.Dense( 128 , activation= 'relu' , input_shape=( 784 ,)),
layers.Dense( 10 , activation= 'softmax' )
])
在此代码中,我们定义了具有 784 个节点的输入层和激活函数“relu”,它代表整流线性单元。如果输入为正,则此函数返回输入,如果为负,则返回 0。然后我们定义具有 128 个节点和相同激活函数的隐藏层。最后,我们定义了具有 10 个节点的输出层和“softmax”激活函数,它将输出转换为 10 个可能数字的概率分布。
第 4 步:编译模型
一旦我们定义了我们的神经网络架构,我们就需要编译模型来指定损失函数、优化算法和评估指标。对于此示例,我们将使用分类交叉熵损失函数、Adam 优化算法和准确性度量。
模型。编译(
损失= 'categorical_crossentropy',
优化器= 'adam',
指标=[ 'accuracy' ]
)
第 5 步:训练模型
编译模型后,我们现在可以在 MNIST 数据集上对其进行训练。首先,我们需要使用 Keras API 加载数据:
(x_train, y_train), (x_test, y_test) = keras. 数据集。米斯特。加载数据()
然后,我们需要通过将输入图像重塑为平面向量并将像素值归一化为介于 0 和 1 之间来预处理数据。
x_train = x_train.reshape(( 60000 , 784 ))
x_train = x_train / 255.0
x_test = x_test.reshape(( 10000 , 784 ))
x_test = x_test / 255.0
接下来,我们将使用该方法在训练数据上训练模型fit()。我们将使用 32 的批量大小并训练 5 个时期(即,5 次遍历训练数据)。
模型.fit (x_train, y_train, batch_size= 32 , epochs= 5 , validation_split= 0.1 )
在训练过程中,模型会调整神经元之间连接的权重,以最小化预测输出与实际输出之间的误差。该validation_split参数指定 10% 的训练数据应用于训练期间的验证。
第 6 步:评估模型
一旦模型经过训练,我们就可以使用该evaluate()方法评估其在测试数据上的性能。这将为我们提供模型在测试数据上的准确性。
test_loss, test_acc = model.evaluate(x_test, y_test)
print ( '测试精度:' , test_acc)
在我们的例子中,我们达到了大约 97% 的准确率,这对于一个简单的神经网络来说已经相当不错了。
第 7 步:使用模型进行预测
最后,我们可以使用训练有素的模型对新数据进行预测。我们可以使用该predict()方法获得给定输入图像的 10 个可能数字的预测概率分布。
predictions = model.predict(x_test[:5])
打印(预测)
在我们的示例中,我们打印前 5 个测试图像的预测概率分布。
结论
在本文中,我们讨论了如何使用 TensorFlow 库在 Python 中从头开始构建一个简单的神经网络。我们涵盖了神经网络背后的基本概念、设置环境、定义神经网络的体系结构、编译模型、训练模型、评估模型以及使用模型进行预测。虽然这只是一个简单的示例,但它应该为您探索广阔的神经网络和深度学习世界提供一个良好的起点。