TensorFlow实战——图像分类

import numpy as np
import tensorflow as tf
from tensorflow import keras
import pandas as pd
import matplotlib.pyplot as plt
print(tf.__version__)
print(keras.__version__)

# 加载数据集
fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, Y_test)=fashion_mnist.load_data()
# 查看训练集的形状和数据类型
print(X_train_full.shape, X_train_full.dtype)
# 比例缩放和像素强度降低到0-1,创建一个验证集
X_valid, X_train = X_train_full[:5000]/255.0, X_train_full[5000:]/255.0
Y_valid, Y_train = y_train_full[:5000], y_train_full[5000:]
# 设置类名列表
class_names=["T_shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "shirt","Sneaker"
             , "Bag", "Anlle boot"]
# 查看第一幅图
print(class_names[Y_train[0]])

# 搭建网络模型
model = tf.keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28, 28]))
model.add(keras.layers.Dense(300, activation="relu"))
model.add(keras.layers.Dense(100, activation="relu"))
model.add(keras.layers.Dense(10, activation="softmax"))# 输出十个概率分布,看属于哪一个
model.compile(loss="sparse_categorical_crossentropy", optimizer="sgd", metrics=["accuracy"])
history=model.fit(X_train, Y_train, epochs=5, validation_data=(X_valid,Y_valid))
#print(history)

# 绘制history曲线
pd.DataFrame(history.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()


# 在测试集上测试
print(model.evaluate(X_test, Y_test))
#仅使用测试集的前三个例子
X_new=X_test[:3]
Y_proba= model.predict(X_new)
print(Y_proba.round(2))
y_pre=model.predict(X_new)
print(y_pre)

自动下载图像数据集;

一、Keras的mnist数据集
mnist数据集是KerasAPI公开的数据集,是(28,28)的图像数据集

二、建立sequential顺序model
对于分类问题必须使用softmax作为输出层的激活函数;如果每一个实例的每个类都有一个目标概率,即使用one—hot编码,在loss的设置时使用categorical_crossentropy;而下面的代码是基于稀疏标签(每个类只有一个目标类索引),并且类间互斥,则设置loss="sparse_categorical_crossentropy"
 

运行结果:

Epoch 1/5
1719/1719 [==============================] - 2s 1000us/step - loss: 0.7156 - accuracy: 0.7644 - val_loss: 0.5408 - val_accuracy: 0.8104
Epoch 2/5
1719/1719 [==============================] - 2s 968us/step - loss: 0.4902 - accuracy: 0.8283 - val_loss: 0.4420 - val_accuracy: 0.8544
Epoch 3/5
1719/1719 [==============================] - 2s 944us/step - loss: 0.4447 - accuracy: 0.8434 - val_loss: 0.4368 - val_accuracy: 0.8472
Epoch 4/5
1719/1719 [==============================] - 2s 941us/step - loss: 0.4176 - accuracy: 0.8533 - val_loss: 0.4170 - val_accuracy: 0.8572
Epoch 5/5
1719/1719 [==============================] - 2s 955us/step - loss: 0.3969 - accuracy: 0.8604 - val_loss: 0.3848 - val_accuracy: 0.8712

绘制准确率和验证集上的准确率 

 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值