import tensorflow as tf
from tensorflow import keras
fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880 [==============================] - 1s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102 [==============================] - 0s 0us/step
X_train_full.shape
(60000, 28, 28)
X_train_full.dtype
dtype('uint8')
X_valid, X_train = X_train_full[:5000] / 255., X_train_full[5000:] / 255.
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]
X_test = X_test / 255.
plt.imshow(X_train[0], cmap="binary")
plt.axis('off')
plt.show()
y_train
array([4, 0, 7, ..., 3, 0, 5], dtype=uint8)
class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat",
               "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]
class_names[y_train[0]]
'Coat'
X_valid.shape
(5000, 28, 28)
X_valid.shape
(5000, 28, 28)
n_rows = 4
n_cols = 10
plt.figure(figsize=(n_cols * 1.2, n_rows * 1.2))
for row in range(n_rows):
    for col in range(n_cols):
        index = n_cols * row + col
        plt.subplot(n_rows, n_cols, index + 1)
        plt.imshow(X_train[index], cmap="binary", interpolation="nearest")
        plt.axis('off')
        plt.title(class_names[y_train[index]], fontsize=12)
plt.subplots_adjust(wspace=0.2, hspace=0.5)
save_fig('fashion_mnist_plot', tight_layout=False)
plt.show()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-23-5f1e97bb1426> in <module>
     10         plt.title(class_names[y_train[index]], fontsize=12)
     11 plt.subplots_adjust(wspace=0.2, hspace=0.5)
---> 12 save_fig('fashion_mnist_plot', tight_layout=False)
     13 plt.show()

NameError: name 'save_fig' is not defined
model = 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"))
keras.backend.clear_session()
np.random.seed(42)
tf.random.set_seed(42)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-25-e54bf78ebc8b> in <module>
      6 keras.backend.clear_session()
      7 np.random.seed(42)
----> 8 tf.random.set_seed(42)

AttributeError: module 'tensorflow._api.v1.random' has no attribute 'set_seed'
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.Dense(300, activation="relu"),
    keras.layers.Dense(100, activation="relu"),
    keras.layers.Dense(10, activation="softmax")
])
model.layers
[<tensorflow.python.keras.layers.core.Flatten at 0x7f5f5df7b610>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f5f5df7b590>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f5f5df7b710>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f5f5e190750>]
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            (None, 784)               0         
_________________________________________________________________
dense (Dense)                (None, 300)               235500    
_________________________________________________________________
dense_1 (Dense)              (None, 100)               30100     
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1010      
=================================================================
Total params: 266,610
Trainable params: 266,610
Non-trainable params: 0
_________________________________________________________________
hidden1 = model.layers[1]
hidden1.name
'dense'
model.get_layer(hidden1.name) is hidden1
True
weights, biases = hidden1.get_weights()
biases
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)
model.compile(loss="sparse_categorical_crossentropy",
              optimizer="sgd",
              metrics=["accuracy"])
history = model.fit(X_train, y_train, epochs=30,
                    validation_data=(X_valid, y_valid))
Train on 55000 samples, validate on 5000 samples
Epoch 1/30
55000/55000 [==============================] - 22s 399us/sample - loss: 0.7050 - acc: 0.7663 - val_loss: 0.4985 - val_acc: 0.8366
Epoch 2/30
55000/55000 [==============================] - 21s 385us/sample - loss: 0.4845 - acc: 0.8310 - val_loss: 0.4563 - val_acc: 0.8426
Epoch 3/30
55000/55000 [==============================] - 21s 382us/sample - loss: 0.4408 - acc: 0.8468 - val_loss: 0.4093 - val_acc: 0.8610
Epoch 4/30
55000/55000 [==============================] - 21s 385us/sample - loss: 0.4148 - acc: 0.8551 - val_loss: 0.4008 - val_acc: 0.8656
Epoch 5/30
55000/55000 [==============================] - 21s 384us/sample - loss: 0.3948 - acc: 0.8615 - val_loss: 0.3795 - val_acc: 0.8696
Epoch 6/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.3792 - acc: 0.8668 - val_loss: 0.3749 - val_acc: 0.8722
Epoch 7/30
55000/55000 [==============================] - 21s 383us/sample - loss: 0.3649 - acc: 0.8714 - val_loss: 0.3761 - val_acc: 0.8710
Epoch 8/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.3537 - acc: 0.8757 - val_loss: 0.3781 - val_acc: 0.8688
Epoch 9/30
55000/55000 [==============================] - 21s 383us/sample - loss: 0.3428 - acc: 0.8790 - val_loss: 0.3459 - val_acc: 0.8806
Epoch 10/30
55000/55000 [==============================] - 21s 383us/sample - loss: 0.3341 - acc: 0.8824 - val_loss: 0.3710 - val_acc: 0.8702
Epoch 11/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.3260 - acc: 0.8839 - val_loss: 0.3332 - val_acc: 0.8834
Epoch 12/30
55000/55000 [==============================] - 21s 389us/sample - loss: 0.3173 - acc: 0.8873 - val_loss: 0.3409 - val_acc: 0.8792
Epoch 13/30
55000/55000 [==============================] - 22s 393us/sample - loss: 0.3092 - acc: 0.8901 - val_loss: 0.3482 - val_acc: 0.8780
Epoch 14/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.3039 - acc: 0.8902 - val_loss: 0.3219 - val_acc: 0.8864
Epoch 15/30
55000/55000 [==============================] - 21s 384us/sample - loss: 0.2959 - acc: 0.8939 - val_loss: 0.3214 - val_acc: 0.8852
Epoch 16/30
55000/55000 [==============================] - 21s 381us/sample - loss: 0.2903 - acc: 0.8957 - val_loss: 0.3333 - val_acc: 0.8830
Epoch 17/30
55000/55000 [==============================] - 21s 382us/sample - loss: 0.2847 - acc: 0.8980 - val_loss: 0.3232 - val_acc: 0.8824
Epoch 18/30
55000/55000 [==============================] - 21s 389us/sample - loss: 0.2802 - acc: 0.8997 - val_loss: 0.3286 - val_acc: 0.8780
Epoch 19/30
55000/55000 [==============================] - 21s 387us/sample - loss: 0.2740 - acc: 0.9018 - val_loss: 0.3057 - val_acc: 0.8892
Epoch 20/30
55000/55000 [==============================] - 21s 378us/sample - loss: 0.2692 - acc: 0.9037 - val_loss: 0.3078 - val_acc: 0.8890
Epoch 21/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.2652 - acc: 0.9053 - val_loss: 0.3153 - val_acc: 0.8864
Epoch 22/30
55000/55000 [==============================] - 21s 378us/sample - loss: 0.2588 - acc: 0.9077 - val_loss: 0.3196 - val_acc: 0.8846
Epoch 23/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.2556 - acc: 0.9078 - val_loss: 0.3162 - val_acc: 0.8868
Epoch 24/30
55000/55000 [==============================] - 21s 385us/sample - loss: 0.2507 - acc: 0.9101 - val_loss: 0.3081 - val_acc: 0.8880
Epoch 25/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.2462 - acc: 0.9126 - val_loss: 0.3017 - val_acc: 0.8894
Epoch 26/30
55000/55000 [==============================] - 21s 380us/sample - loss: 0.2424 - acc: 0.9133 - val_loss: 0.3277 - val_acc: 0.8830
Epoch 27/30
55000/55000 [==============================] - 21s 382us/sample - loss: 0.2395 - acc: 0.9148 - val_loss: 0.3006 - val_acc: 0.8904
Epoch 28/30
55000/55000 [==============================] - 21s 378us/sample - loss: 0.2348 - acc: 0.9160 - val_loss: 0.3030 - val_acc: 0.8914
Epoch 29/30
55000/55000 [==============================] - 20s 372us/sample - loss: 0.2306 - acc: 0.9178 - val_loss: 0.2998 - val_acc: 0.8918
Epoch 30/30
55000/55000 [==============================] - 21s 373us/sample - loss: 0.2273 - acc: 0.9189 - val_loss: 0.3016 - val_acc: 0.8948
import pandas as pd

pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid(True)
plt.gca().set_ylim(0, 1)
save_fig("keras_learning_curves_plot")
plt.show()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-35-e5ab1d7e7f53> in <module>
      4 plt.grid(True)
      5 plt.gca().set_ylim(0, 1)
----> 6 save_fig("keras_learning_curves_plot")
      7 plt.show()

NameError: name 'save_fig' is not defined
model.evaluate(X_test, y_test)
10000/10000 [==============================] - 1s 128us/sample - loss: 0.3316 - acc: 0.8852
[0.3315748940348625, 0.8852]
X_new = X_test[:3]
y_proba = model.predict(X_new)
y_proba.round(2)
array([[0.  , 0.  , 0.  , 0.  , 0.  , 0.01, 0.  , 0.03, 0.  , 0.97],
       [0.  , 0.  , 0.98, 0.  , 0.02, 0.  , 0.  , 0.  , 0.  , 0.  ],
       [0.  , 1.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ]],
      dtype=float32)
y_pred = model.predict_classes(X_new)
y_pred
array([9, 2, 1])
np.array(class_names)[y_pred]
array(['Ankle boot', 'Pullover', 'Trouser'], dtype='<U11')
y_new = y_test[:3]
plt.figure(figsize=(7.2, 2.4))
for index, image in enumerate(X_new):
    plt.subplot(1, 3, index + 1)
    plt.imshow(image, cmap="binary", interpolation="nearest")
    plt.axis('off')
    plt.title(class_names[y_test[index]], fontsize=12)
plt.subplots_adjust(wspace=0.2, hspace=0.5)
save_fig('fashion_mnist_images_plot', tight_layout=False)
plt.show()
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-40-dd332162bb4a> in <module>
      7     plt.title(class_names[y_test[index]], fontsize=12)
      8 plt.subplots_adjust(wspace=0.2, hspace=0.5)
----> 9 save_fig('fashion_mnist_images_plot', tight_layout=False)
     10 plt.show()

NameError: name 'save_fig' is not defined