带Keras的TensorFlow(下)


本文是Part 1,用于深度学习的Tensorflow。确保你通过它来更好地理解这个案例研究。

Keras是一个用Python编写的高级神经网络API,能够在Tensorflow,CNTK或TheAno之上运行。它的开发侧重于实现快速实验。在这篇文章中,我们将涵盖一个小的案例研究时尚MNIST。

Fashion-MNIST是Zalando文章图像的一个数据集,由一个60,000个示例的训练集和一个10,000个示例的测试集组成。每个示例是一个28×28灰度图像,与来自10个类的标签相关联。Zalando打算将Fashion-MNIST作为原始MNIST数据集的直接嵌入式替代,用于对机器学习算法进行基准测试。它共享相同的图像大小和结构的训练和测试分裂。

标签

每个训练和测试示例都分配给以下标签之一:

  • 0件T恤/上衣
  • 1条裤子
  • 2套头衫
  • 3连衣裙
  • 4涂层
  • 5凉鞋
  • 6件衬衫
  • 7运动鞋
  • 8袋
  • 9踝靴

1)首次加载所需的包

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

2)加载数据集

。。。将数据集下载到您的系统中

fashon_mnist = keras.datasets.fashion_mnist
(train_images,train_labeks),(test_images,test_labels) = fashon_mnist.load_data()

3)前几行的可视化

让我们为图像绘制一些样本。我们将标签添加到具有相应时尚项目类别的列车集图像中。

for i in range(10):
    plt.figure()
    plt.imshow(train_images[i])
    plt.colorbar()
    plt.grid(False)
    plt.show()

train_images = test_images/255.0
test_images = test_images/255.0
plt.figure(figsize=(10,10))

class_name = ['T-shirt/top','Trouser','Pullovers','Dress','Coat','Sandals','Shirt','Sneaker','Bag','Ankle boot']

for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i],cmap=plt.cm.RdBu)
    plt.xlabel(class_name[train_labeks[i]])
plt.show()

4)模型创建

我们从准备模型开始。我们将使用顺序模型。顺序模型是层的线性堆叠。它可以先初始化,然后使用add方法添加层,或者在init阶段添加所有层。添加的层数如下:密集。这一层是一个规则的全连接NN层。使用时不带参数:units:。这是一个正整数,其含义是:输出空间的维数;在本例中是128;activation-激活函数:relu;。

稠密。这是最后一层(完全连接)。它与参数一起使用:units:类的数量(在我们的示例中为10);activation:softmax;对于这最后一层,它使用的是softmax激活(多类分类的标准)单元。这是一个正整数,其含义是:输出空间的维数;在这种情况下是128;激活-激活函数:relu;

model = keras.Sequential(
                [keras.layers.Flatten(input_shape=(28,28)),
                 keras.layers.Dense(128,activation=tf.nn.relu),
                 keras.layers.Dense(10,activation=tf.nn.softmax)
                ]
)

5)编译模型

然后我们编译模型,指定以下参数:

  • 损失
  • 优化器
  • 度量标准
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

6)拟合模型

model.fit(train_images,test_labels)

7)测试预测精度

我们计算了测试损失和精度。

test_loss , test_acc = model.evaluate(test_images,test_labels)
#Test accuracy is around 0.81

8)预测

现在我们可以使用训练好的模型对测试数据集模型进行预测/分类。predict(x_test)

prediction = model.predict(test_images)
for i in range(10): 
    print("expected -",class_name[test_labels[i]])
    print("predicted-" ,class_name[np.argmax(prediction[i])])

参考文献

  1. https://www.tensorflow.org/
  2. https://www.kaggle.com

本文最初发表在 Knoldus blog