数据集还是Fashion minist 数据集。
什么是独热编码??#就是标志的这个位置时,就会变为1,其他的都会变成0。
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
(train_image,train_lable),(test_image,test_lable)=tf.keras.datasets.fashion_mnist.load_data()
print('train原始数据集:\n',train_lable,'\r\n')
#
train_lable_onehot=tf.keras.utils.to_categorical(train_lable) #把顺序编码转换为独热编码
print('train原始数据集-独热编码的转换结果:\n',train_lable_onehot,'\r\n')
#-------------------------------------------------------------------------------#
print('test原始数据集:\n',test_lable,'\r\n')
#再将test数据集作为独热编码
test_lable_onehot=tf.keras.utils.to_categorical(test_lable)
print('test原始数据集-独热编码的转换结果:\n',test_lable_onehot,'\r\n')
#归一化操作:
train_image=train_image/255
test_image=test_image/255
#建立model
model=tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))#第一层是一个Flatten层 #28*28
model.add(tf.keras.layers.Dense(128,activation='relu')) #第二个层就不用写input_shape了
model.add(tf.keras.layers.Dense(10,activation='softmax'))#第三层要输出10个概率值,表明可能是哪一种图片 #那么如何把一个输出变成一个概率值呢?使用softmax激活
#编译model
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['acc']
)
#训练
print('训练:\r\n')
model.fit(train_image,train_lable_onehot,epochs=5)
print('test_image.shape \r\n',test_image.shape,'\r\n')
#预测predict
predict=model.predict(test_image)
print('predict.shape \r\n',predict.shape,'\r\n')
print('predict[0] \r\n',predict[0],'\r\n')
print('np.argmax(predict[0]) \r\n',np.argmax(predict[0]),'\r\n')