做好网站如何发布wordpress主题放在
news/
2025/9/25 17:43:30/
文章来源:
做好网站如何发布,wordpress主题放在,网上做公司网站怎么做,安徽天长建设局网站文章目录 一. 训练Keras中的MNIST数据集二. 工作流程1. 构建神经网络2. 准备图像数据3. 训练模型4. 利用模型进行预测5. (新数据上)评估模型精度 本节将首先给出一个神经网络示例#xff0c;引出如下概念。了解完本节后#xff0c;可以对神经网络在代码上的实现有一个整体的了… 文章目录 一. 训练Keras中的MNIST数据集二. 工作流程1. 构建神经网络2. 准备图像数据3. 训练模型4. 利用模型进行预测5. (新数据上)评估模型精度 本节将首先给出一个神经网络示例引出如下概念。了解完本节后可以对神经网络在代码上的实现有一个整体的了解。
本节相关概念: 类样本标签层layer数据蒸馏密集连接10路softmax分类层编译compilation步骤的3个参数损失值、精度过拟合 我们来看一个神经网络的具体实例使用Python的Keras库来学习手写数字分类。
在这个例子中我们要解决的问题是将手写数字的灰度图像28像素×28像素划分到10个类别中从0到9。我们将使用MNIST数据集。你可以将“解决”MNIST问题看作深度学习的“Hello World”用来验证你的算法正在按预期运行。下图给出了MNIST数据集的一些样本。 说明 在机器学习中分类问题中的某个类别叫作类class数据点叫作样本sample与某个样本对应的类叫作标签label即描述样本属于哪个类别。 你不需要现在就尝试在计算机上运行这个例子。之后的文章会具体分析。 一. 训练Keras中的MNIST数据集
from tensorflow.keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) mnist.load_data()
train_images和train_labels组成了训练集模型将从这些数据中进行学习。然后我们在测试集包括test_images和test_labels上对模型进行测试。
图像被编码为NumPy数组而标签是一个数字数组取值范围是09。图像和标签一一对应。 看一下训练数据 train_images.shape (60000, 28, 28) len(train_labels)
60000 train_labels
array([5, 0, 4, ..., 5, 6, 8], dtypeuint8)再来看一下测试数据 test_images.shape
(10000, 28, 28) len(test_labels)
10000 test_labels
array([7, 2, 1, ..., 4, 5, 6], dtypeuint8)二. 工作流程
我们的工作流程如下 首先将训练数据train_images和train_labels输入神经网络 然后神经网络学习将图像和标签关联在一起 最后神经网络对test_images进行预测我们来验证这些预测与test_labels中的标签是否匹配。 具体的代码我们可以在 deep-learning-with-python-notebooks 中直接运行。 1. 构建神经网络
下面我们来构建神经网络如下
from tensorflow import keras
from tensorflow.keras import layers model keras.Sequential([ layers.Dense(512, activationrelu), layers.Dense(10, activationsoftmax) ]) 神经网络的核心组件是层layer。
具体来说层从输入数据中提取表示。大多数深度学习工作涉及将简单的层链接起来从而实现渐进式的数据蒸馏data distillation。深度学习模型就像是处理数据的筛子包含一系列越来越精细的数据过滤器也就是层。
本例中的模型包含2个Dense层它们都是密集连接也叫全连接的神经层。
第2层是一个10路softmax分类层它将返回一个由10个概率值总和为1组成的数组。每个概率值表示当前数字图像属于10个数字类别中某一个的概率。
在训练模型之前我们还需要指定编译compilation步骤的3个参数。 优化器optimizer模型基于训练数据来自我更新的机制其目的是提高模型性能。损失函数loss function模型如何衡量在训练数据上的性能从而引导自己朝着正确的方向前进。在训练和测试过程中需要监控的指标metric本例只关心精度accuracy即正确分类的图像所占比例。后面两章会详细介绍损失函数和优化器的确切用途。 如下代码展示了编译步骤。 model.compile(optimizerrmsprop, losssparse_categorical_crossentropy, metrics[accuracy]) 2. 准备图像数据
在开始训练之前我们先对数据进行预处理将其变换为模型要求的形状并缩放到所有值都在[0, 1]区间。前面提到过训练图像保存在一个uint8类型的数组中其形状为(60000, 28, 28)取值区间为[0,255]。我们将把它变换为一个float32数组其形状为(60000, 28 *28)取值范围是[0, 1]。
下面准备图像数据如代码所示。
train_images train_images.reshape((60000, 28 * 28))
train_images train_images.astype(float32) / 255 test_images test_images.reshape((10000, 28 * 28))
test_images test_images.astype(float32) / 255 3. 训练模型
在Keras中通过调用模型的fit方法调用数据训练模型。 model.fit(train_images, train_labels, epochs5, batch_size128)
Epoch 1/5
60000/60000 [] - 5s - loss: 0.2524 - acc: 0.9273 Epoch 2/5
51328/60000 [.....] - ETA: 1s - loss: 0.1035 - acc: 0.9692训练过程中显示了两个数字一个是模型在训练数据上的损失值loss另一个是模型在训练数据上的精度acc。我们很快就在训练数据上达到了0.98998.9%的精度。
现在我们得到了一个训练好的模型可以利用它来预测新数字图像的类别概率如下代码。这些新数字图像不属于训练数据比如可以是测试集中的数据。 4. 利用模型进行预测 test_digits test_images[0:10] predictions model.predict(test_digits) predictions[0]
array([1.0726176e-10, 1.6918376e-10, 6.1314843e-08, 8.4106023e-06, 2.9967067e-11, 3.0331331e-09, 8.3651971e-14, 9.9999106e-01, 2.6657624e-08, 3.8127661e-07], dtypefloat32)如上代码我们对11个test_images图片进行预测是什么数字我们拿到第一个图片预测的概率数组其中索引为7时概率最大0.99999106几乎等于1所以根据我们的模型这个数字一定是7。 predictions[0].argmax()
7 predictions[0][7]
0.99999106这里我们检查测试标签是否与之一致 test_labels[0] 7平均而言我们的模型对这种前所未见的数字图像进行分类的效果如何我们来计算在整个测试集上的平均精度如下代码所示。 5. (新数据上)评估模型精度 test_loss, test_acc model.evaluate(test_images, test_labels) print(ftest_acc: {test_acc})
test_acc: 0.9785测试精度约为97.8%比训练精度98.9%低不少。训练精度和测试精度之间的这种差距是过拟合overfit造成的。 过拟合是指机器学习模型在新数据上的性能往往比在训练数据上要差。 第一个例子到这里就结束了。你刚刚看到了如何用不到15行Python代码构建和训练一个神经网络对手写数字进行分类。 之后的文章我们将详细描述每一个步骤的原理并且将学到张量输入模型的数据存储对象、张量运算层的组成要素与梯度下降可以让模型从训练示例中进行学习。
参考 《Python深度学习第二版》–弗朗索瓦·肖莱 https://www.redhat.com/zh/topics/digital-transformation/what-is-deep-learning
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917321.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!