TensorFlow中CNN的训练2024 年 11 月 14 日 | 阅读 9 分钟 MNIST数据库(**Modified National Institute of Standard Technology database**)是一个广泛的手写数字数据库,用于训练各种图像处理系统。它由“**重新整合**”来自**MNIST**原始数据集的样本创建。 如果我们熟悉Connects的构建模块,我们就可以用TensorFlow构建一个。我们使用MNIST数据集进行图像分类。 准备数据与之前的教程相同。我们可以运行代码并直接跳转到CNN的架构。 在这里,我们在**Google Colab**(机器学习的在线编辑器)中执行我们的代码。 我们可以通过以下链接访问TensorFlow编辑器:https://colab.research.google.com 这些是用于训练CNN(卷积神经网络)的步骤。 步骤: **步骤 1:**上传数据集 **步骤 2:**输入层 **步骤 3:**卷积层 **步骤 4:**池化层 **步骤 5:**卷积层和池化层 **步骤 6:**密集层 **步骤 7:**Logit层 ![]() 步骤 1:上传数据集MNIST数据集可通过scikit学习,网址为(统一资源定位符)。我们可以下载它并将其存储在我们的下载中。我们可以使用fetch_mldata('MNIST Original')上传它。 创建测试/训练集我们需要将数据集拆分为**train_test_split**。 缩放特征 最后,我们借助**MinMax Scaler**缩放函数。 定义CNN(卷积神经网络)与传统的神经网络相比,CNN使用图像的像素上的过滤器来学习详细的模式而不是全局模式。要创建CNN,我们必须定义
CNN架构
在创建CNN中使用的重要模块
我们可以定义一个函数来构建CNN。 让我们详细了解如何在函数中包装所有内容之前构建每个构建模块。 步骤 2:输入层我们需要定义一个具有数据形状的张量。为此,我们可以使用**模块tf.reshape**。在此模块中,我们需要声明要重塑的张量,并确定张量的形状。第一个参数是数据的特征,它在函数的参数中定义。 图片具有宽度、高度和通道。 **MNIST**数据集是尺寸为**28x28**的单色图片。我们将批处理大小设置为-1,使其采用特征["x"]的形状。优点是可以调整批处理大小到超参数。如果批处理大小为7,则张量将馈送**5,488**个值(**28 * 28 * 7**)。 步骤 3:卷积层第一个卷积层有18个过滤器,内核大小为7x7,且具有相等填充。相同的填充使输出张量和输入张量都具有相同的宽度和高度。 TensorFlow将在行和列中添加零以确保相同的大小。 我们使用Relu激活函数。输出大小将为[28, 28和14]。 步骤 4:池化层卷积之后的下一步是池化计算。池化计算将减少数据的扩展。我们可以使用大小为3x3和步幅为2的模块max_pooling2d。我们使用上一层作为输入。输出大小可以是[batch_size,14,14和15]。 步骤 5:池化层和第二卷积层第二个CNN恰好有32个过滤器,输出大小为[batch_size,14,14,32]。池化层的大小与前面相同,输出形状为[batch_size,14,14和18]。 步骤6:完全连接(密集)层我们必须定义完全连接的层。特征图必须先压缩,然后才能与密集层组合。我们可以使用大小为**7*7*36**的模块重塑。 密集层将连接**1764**个神经元。我们添加一个Relu激活函数,并可以添加一个Relu激活函数。我们添加一个dropout正则化项,其速率为0.3,这意味着30%的权重将为0。dropout仅在训练阶段进行。如果模型需要训练或评估,则**cnn_model_fn()**具有一个参数模式来声明。 步骤 7:Logits层最后,我们定义具有模型预测的最后一层。输出形状等于批处理大小12,等于该层中图像的总数。 我们可以创建一个包含类和每个类可能性的字典。如果logit层,该模块使用tf.argmax()返回最大值。 softmax函数返回每个类的概率。 我们只想在模式设置为预测时返回字典预测。我们添加这些代码以显示预测。 下一步包括计算模型的损失。可以使用以下代码轻松计算损失 最后一步是优化模型,即找到权重的最佳值。为此,我们使用学习率为0.001的梯度下降优化器。目的是减少损失。 我们已经完成了CNN。但是,我们希望在评估模式期间显示性能指标。多类模型的性能指标是准确性指标。 TensorFlow配备了一个具有两个参数(标签和预测值)的准确性模型。 我们可以创建我们的第一个CNN,并且我们准备好将所有内容包装在一个函数中以使用它,并训练和评估该模型。 CNN需要花费很多时间进行训练,因此,我们创建一个日志记录钩子,以每**50**次迭代存储软件层的值。 我们准备评估模型。我们的批处理大小为100,并将数据分为多个部分。请注意,我们将训练步骤设置为18000,这可能需要花费大量时间来训练。 现在,该模型已经过训练,我们可以对其进行评估并轻松打印结果。 借助该体系结构,我们获得了97%的准确度。我们可以更改体系结构,批处理大小和迭代次数以提高准确性。架构,批处理大小和迭代次数以提高准确性。 CNN神经网络的性能远胜于ANN或逻辑回归。在有关人工神经网络的教程中,我们的准确度为96%,这在CNN中较低。 CNN在速度计算和准确性方面,在广泛的图像集中表现令人印象深刻。 要构建CNN,我们需要遵循以下六个步骤 1) 输入层此步骤重置数据。大小等于像素数的平方根。例如,如果图片有156个像素,则该数字为26x26。我们需要指定图像是否包含颜色。如果是,则对于RGB-,我们的大小为3到3,否则为1。 2) 卷积层我们需要创建一致的层。我们应用各种过滤器来学习网络的重要特征。我们定义内核的大小和过滤器的体积。 3) 池化层在第三步中,我们添加一个池化层。此层减小输入的大小。它通过获取子矩阵的最大值来实现。 4) 添加卷积层和池化层在此步骤中,我们可以根据需要添加尽可能多的池化层。它使用具有20多个硬层的Google架构。 5) 密集层步骤5展平先前的内容以形成完全连接的层。在此步骤中,我们可以使用不同的激活函数并添加dropout效果。 6) Logit层最后一步是预测。 下一个主题CNN中的MNIST数据集 |
我们请求您订阅我们的新闻通讯以获取最新更新。