这里我们还是以MNIST数据为例,与上一篇的不同在于上一篇是关于手写体数字识别,本篇是关于服装的简单识别。Fashion Mnist数据集由70,000张黑白图片构成,每张图片大小为 28x28,由十类服饰图片构成。另一个MNIST数据集是手写数字,Fashion MNIST 与之相比更有挑战性,适合用来验证算法
一般滴,识别思路是
这篇文档使用高级APItf.keras在TensorFlow中搭建和训练模型。 下面简单介绍一下Keras。
Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。官方网址是https://keras.io/zh/。使用Keras主要下面几个步骤
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
classes = model.predict(x_test, batch_size=128)
下面我们利用keras采用神经网络的方法对服装图像进行识别。
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
#获取数据
fashion_mnist=keras.datasets.fashion_mnist
(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()
print(train_images.shape)
# print(train_images[1])
print(train_labels[1])
我们获取了数据,通过shape可以查看大小,并可以看看内部的数值。
在训练网络之前,必须对数据进行预处理。当前数据的像素值在0-255之间,统一不同数据间的量纲,有助于我们接下来对数据进行分析和计算,即对数据进行归一化处理。
#对数据进行归一化处理
train_images=train_images/255
test_images=test_images/255
通过keras的Sequential创建模型,并添加神经网络的层次
#构建网络模型
model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128,activation='relu'),
keras.layers.Dense(10,activation='softmax')
])
keras的配置网络也是一句话的事儿,可以看到设置了优化器,损失函数等。
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
也是一句话
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
如有必要,我们对新的数据进行预测,这里举个例子,所有的测试数据进行预测。
predictions = model.predict(test_images)#对所有标签与图片进行预测
训练模型在整个测试数据集的表现情况如下,测试准确率接近88%。
60000/60000 [==============================] - 2s 35us/step - loss: 0.2384 - acc: 0.9115
Test accuracy: 0.8796
从对keras的神经网络图像识别可以看到