本文是Part 1,用于深度学习的Tensorflow。确保你通过它来更好地理解这个案例研究。
Keras是一个用Python编写的高级神经网络API,能够在Tensorflow,CNTK或TheAno之上运行。它的开发侧重于实现快速实验。在这篇文章中,我们将涵盖一个小的案例研究时尚MNIST。
Fashion-MNIST是Zalando文章图像的一个数据集,由一个60,000个示例的训练集和一个10,000个示例的测试集组成。每个示例是一个28×28灰度图像,与来自10个类的标签相关联。Zalando打算将Fashion-MNIST作为原始MNIST数据集的直接嵌入式替代,用于对机器学习算法进行基准测试。它共享相同的图像大小和结构的训练和测试分裂。
每个训练和测试示例都分配给以下标签之一:
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
。。。将数据集下载到您的系统中
fashon_mnist = keras.datasets.fashion_mnist
(train_images,train_labeks),(test_images,test_labels) = fashon_mnist.load_data()
让我们为图像绘制一些样本。我们将标签添加到具有相应时尚项目类别的列车集图像中。
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()
我们从准备模型开始。我们将使用顺序模型。顺序模型是层的线性堆叠。它可以先初始化,然后使用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)
]
)
然后我们编译模型,指定以下参数:
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(train_images,test_labels)
我们计算了测试损失和精度。
test_loss , test_acc = model.evaluate(test_images,test_labels)
#Test accuracy is around 0.81
现在我们可以使用训练好的模型对测试数据集模型进行预测/分类。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])])
本文最初发表在 Knoldus blog。