服装数据集服装数据集与MNIST数据集非常相似。有需要的可以查看教程《MNIST数据集》,里面有70000张灰度图,每张都是28x28像素。这里的时尚数据集将使用60,000张图像进行训练,使用10,000张图像进行评估,可以直接使用Keras加载。fashion_mnist=tf.keras.datasets.fashion_mnist(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()所有图片可以分为10类:class_names=['T-shirt/top','Trouser','套头衫','连衣裙','外套','凉鞋','衬衫','运动鞋','包','踝靴']数据预处理:在将数据送入神经网络训练之前,需要Preprocess数据,查看一张训练图片,像素值的分布范围为[0,255]shoes将数据归一化:train_images=train_images/255.0test_images=test_images/255.0为了验证数据的正确性,首先展示25张图片及图片的分类:服装建模神经网络的基本模块是层(Layer),层会从传输的数据中提取特征,这些特征对解决问题很有帮助。很多深度学习是由一系列串联的简单层组成的。大多数层,例如Dense,在训练过程中都有可学习的参数。模型=tf.keras.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)),tf.keras.layers.Dense(128,activation='relu'),tf.keras.layers.Dense(10)])Flatten层将二维(28x28)图像转换为一维数组。该层没有要学习的参数,只是格式化数据。第一个Dense层有128个节点或神经元,第二个Dense层返回一个长度为10的数组。每个节点包含当前图片属于哪个类别的分数。模型编译模型需要三个设置:lossfunction-这个主要用来评估训练过程中模型的准确性optimizer-模型如何更新指标-用来监控训练和测试步骤model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy'])填写训练数据:model.fit(train_images,train_labels,epochs=10)评估模型的正确性:test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('Testaccuracy:',test_acc)显示结果:Testaccuracy:0.8835999965667725Trainingprocessoutput:1875/1875[===============================]-1s523us/step-loss:0.2379-accuracy:0.9110可以看出测试数据正确率略低于对于训练数据来说,这种训练和测试之间的差距被称为过度拟合(overfitting),当机器学习模型执行wo时就会发生过度拟合rse用于未处理的数据。预测模型训练好后,可以用它来预测一些图片,加一个Softmax层将结果转化为置信度,更容易理解predictions=probability_model.predict(test_images)print(predictions[0])可以看出第0个测试图像属于每个类别的置信度:[4.7003473e-072.8711662e-091.8403462e-083.7643213e-092.0236126e-088.2177273e-041.0194674e-069.51106126e-088.2177273e-041.0194674e-069.51106.3407e-179.511067207e-6]第9个数据置信度最高,打印图片的标签也是9,说明预测正确。随机选择一些图片输出:置信度分布中第13张图片有81%的可能是凉鞋,说明机器学习预测错误,应该是跑鞋。也可以预测单个图片。虽然是单张图片,但是Keras还是需要一个数组来传递,将图片添加到集合中。img=(np.expand_dims(img,0))forprediction:predictions_single=probability_model.predict(img)综上所述,以上是一个简单的搭建神经网络的过程,分为数据处理等几个步骤,模型训练和预测。
