import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline
加载fashion_mnist数据集
1
| (train_image,train_label),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
|
归一化
1 2 3
| #归一化处理,从0~1 train_image = train_image /255 test_image = test_image /255
|
模型建立
1 2 3 4
| model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape=(28,28)))#28*28的图片大小 model.add(tf.keras.layers.Dense(128,activation='relu')) model.add(tf.keras.layers.Dense(10,activation='softmax'))#10个概率分布
|
模型优化函数等设置
1 2 3 4
| model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['acc'] )
|
模型训练
1
| history = model.fit(train_image,train_label,epochs=5)
|
1
| model.evaluate(test_image,test_label)
|
evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)
输入数据和标签,输出损失值和选定的指标值(如精确度accuracy)
评估模型,不输出预测结果
loss,accuracy = model.evaluate(X_test,Y_test)
print(‘\ntest loss’,loss)
print(‘accuracy’,accuracy)
model.predict
输入测试数据,输出预测结果 (通常用在需要得到预测结果的时候,比如需要拿到结果来画图)
1.输入输出不同
model.evaluate 输入数据(data)和真实标签(label),然后将预测结果与真实标签相比较,得到两者误差并输出.
model.predict 输入数据(data),输出预测结果
2.是否需要真实标签
model.evaluate 需要,因为需要比较预测结果与真实标签的误差
model.predict 不需要,只是单纯输出预测结果,全程不需要标签的参与。
独热编码
1 2
| train_label_onehot = tf.keras.utils.to_categorical(train_label)#由顺序数据集转为独热编码 test_label_onehot = tf.keras.utils.to_categorical(test_label)#由顺序数据集转为独热编码
|
train_label_onehot array([[0., 0., 0., ..., 0., 0., 1.], [1., 0., 0., ..., 0., 0., 0.], [1., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [1., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]], dtype=float32)