from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
import matplotlib.pyplot as plt
def plot_image(image):
fig = plt.gcf()
fig.set_size_inches(2,2)
plt.imshow(image, cmap='binary')
plt.show()
plot_image(train_images[0])
x_train = train_images.reshape(60000, 784).astype('float32')
x_test = test_images.reshape(10000, 784).astype('float32')
x_train = x_train / 255
x_test = x_test / 255
print(train_labels[:5])
from tensorflow.python.keras.utils import np_utils
y_train = np_utils.to_categorical(train_labels)
y_test = np_utils.to_categorical(test_labels)
print('one-hot:')
print(y_train[:5])
from tensorflow.python.keras import Sequential
from tensorflow.python.keras.layers import Dense
model = Sequential()
model.add(Dense(units=256,
input_dim=784,
kernel_initializer='normal',
activation='relu'))
model.add(Dense(units=10,
kernel_initializer='normal',
activation='softmax'))
print(model.summary())
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
train_history = model.fit(x=x_train,
y=y_train,
validation_split=0.2,
epochs=10,
batch_size=200,
verbose=2)
def show_train_history(train_history, train, validation):
plt.plot(train_history.history[train])
plt.plot(train_history.history[validation])
plt.title('Train history')
plt.ylabel(train)
plt.xlabel('Epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()
show_train_history(train_history, 'acc', 'val_acc')
scores = model.evaluate(x_test, y_test)
print()
print('accuracy=', scores[1])
prediction = model.predict_classes(x_test)
print(prediction)
def plot_images_labels_prediction(images, labels, prediction, idx, num=10):
fig = plt.gcf()
fig.set_size_inches(12, 5)
if num>25: num=25
for i in range(num):
ax = plt.subplot(5, 5, i+1)
ax.imshow(images[idx], cmap='binary')
title = 'label=' + str(labels[idx])
if len(prediction) > 0:
title += '.predict=' + str(prediction[idx])
ax.set_title(title, fontsize=10)
ax.set_xticks([])
ax.set_yticks([])
idx += 1
plt.show()
plot_images_labels_prediction(test_images, test_labels, prediction, idx=340)



