import tensorflow as tf
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.fashion_mnist.load_data()
import matplotlib.pyplot as plt
plt.imshow(x_train[0], 'gray')
import pandas as pd
df = pd.DataFrame(y_train,columns=["a"])
len(df["a"].unique())
from tensorflow.keras.layers import Dense
layer1 = Dense(units=300,activation='sigmoid')
layer2 = Dense(units=100,activation='sigmoid')
layer3 = Dense(units=10,activation='softmax') #because there's 10 classes
from tensorflow.keras import Sequential
model = Sequential()
model.add(layer1)
model.add(layer2)
model.add(layer3)
model.compile(optimizer="sgd",loss="sparse_categorical_crossentropy")
from sklearn.preprocessing import MinMaxScaler
import numpy as np
vec_x_train = list(map(lambda x: x.flatten() ,x_train))
vec_x_train = np.asarray(vec_x_train)
#scaler = MinMaxScaler())
vec_x_train.shape
history = model.fit(vec_x_train, y_train, epochs=10)
Epoch 1/10
1875/1875 [==============================] - 7s 3ms/step - loss: 1.4597
Epoch 2/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.6816
Epoch 3/10
1875/1875 [==============================] - 7s 3ms/step - loss: 0.5885
Epoch 4/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.5602
Epoch 5/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.5395
Epoch 6/10
1875/1875 [==============================] - 7s 3ms/step - loss: 0.5390
Epoch 7/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.5437
Epoch 8/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.5432
Epoch 9/10
1875/1875 [==============================] - 7s 4ms/step - loss: 0.5493
Epoch 10/10
1875/1875 [==============================] - 7s 3ms/step - loss: 0.5631
plt.plot(history.history['loss'])
plt.show()
model1 = Sequential()
model1.add(Dense(units=300,activation='relu'))
model1.add(Dense(units=100,activation='relu'))
model1.add(Dense(units=10,activation='softmax'))
model1.compile(optimizer="sgd",loss="sparse_categorical_crossentropy")
history1 = model1.fit(vec_x_train, y_train, epochs=10)
Epoch 1/10
1875/1875 [==============================] - 7s 3ms/step - loss: nan
Epoch 2/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 3/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 4/10
1875/1875 [==============================] - 7s 3ms/step - loss: nan
Epoch 5/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 6/10
1875/1875 [==============================] - 7s 3ms/step - loss: nan
Epoch 7/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 8/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 9/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
Epoch 10/10
1875/1875 [==============================] - 7s 4ms/step - loss: nan
plt.plot(history1.history['loss'])
plt.show()
lecun_normal = tf.keras.initializers.LecunNormal
lecun_normal
model2 = Sequential()
model2.add(Dense(units=300,kernel_initializer=lecun_normal,activation='selu'))
model2.add(Dense(units=100,kernel_initializer=lecun_normal,activation='selu'))
model2.add(Dense(units=10,activation='softmax'))
model2.compile(optimizer="sgd",loss= "sparse_categorical_crossentropy")
history2 = model2.fit(vec_x_train, y_train, epochs=10)
Epoch 1/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.7148
Epoch 2/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.7741
Epoch 3/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.6865
Epoch 4/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.6965
Epoch 5/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.7802
Epoch 6/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.6855
Epoch 7/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.5510
Epoch 8/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.6057
Epoch 9/10
1875/1875 [==============================] - 7s 4ms/step - loss: 27.5133
Epoch 10/10
1875/1875 [==============================] - 8s 4ms/step - loss: 27.7091
plt.plot(history2.history['loss'])
plt.show()
model3 = Sequential()
model3.add(Dense(units=800,activation='sigmoid'))
model3.add(Dense(units=500,activation='sigmoid'))
model3.add(Dense(units=10,activation='softmax'))
model3.compile(optimizer="sgd",loss="sparse_categorical_crossentropy")
history3 = model3.fit(vec_x_train, y_train, epochs=10)
Epoch 1/10
1875/1875 [==============================] - 23s 12ms/step - loss: 1.1823
Epoch 2/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5661
Epoch 3/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5164
Epoch 4/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5007
Epoch 5/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.4940
Epoch 6/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.4961
Epoch 7/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5024
Epoch 8/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.4984
Epoch 9/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.4965
Epoch 10/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5041
plt.plot(history3.history['loss'])
plt.show()
from tensorflow.keras import initializers
initializer = tf.keras.initializers.Zeros()
model4 = Sequential()
model4.add(Dense(units=800,activation='sigmoid',kernel_initializer=initializer))
model4.add(Dense(units=500,activation='sigmoid'))
model4.add(Dense(units=10,activation='softmax'))
model4.compile(optimizer="sgd",loss="sparse_categorical_crossentropy")
history4 = model4.fit(vec_x_train, y_train, epochs=10)
Epoch 1/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.2001
Epoch 2/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.6119
Epoch 3/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5777
Epoch 4/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5746
Epoch 5/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5697
Epoch 6/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5693
Epoch 7/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5824
Epoch 8/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5871
Epoch 9/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5693
Epoch 10/10
1875/1875 [==============================] - 22s 12ms/step - loss: 0.5696
plt.plot(history4.history['loss'])
plt.show()
from tensorflow.keras.optimizers import SGD
initializer = tf.keras.initializers.Zeros()
model5 = Sequential()
model5.add(Dense(units=800,activation='sigmoid',kernel_initializer=initializer))
model5.add(Dense(units=500,activation='sigmoid'))
model5.add(Dense(units=10,activation='softmax'))
opt = SGD(lr=0.1)
model5.compile(optimizer=opt,loss="sparse_categorical_crossentropy")
history5 = model5.fit(vec_x_train, y_train, epochs=10)
plt.plot(history5.history['loss'])
plt.show()
Epoch 1/10
1875/1875 [==============================] - 22s 11ms/step - loss: 1.3815
Epoch 2/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.3266
Epoch 3/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.2502
Epoch 4/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.2195
Epoch 5/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.2296
Epoch 6/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.1914
Epoch 7/10
1875/1875 [==============================] - 21s 11ms/step - loss: 1.4639
Epoch 8/10
1875/1875 [==============================] - 21s 11ms/step - loss: 1.3664
Epoch 9/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.4923
Epoch 10/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.5750
initializer = tf.keras.initializers.Zeros()
model6 = Sequential()
model6.add(Dense(units=800,activation='sigmoid',kernel_initializer=initializer))
model6.add(Dense(units=500,activation='sigmoid'))
model6.add(Dense(units=10,activation='softmax'))
opt = SGD(lr=0.01)
model6.compile(optimizer=opt,loss="sparse_categorical_crossentropy")
history6 = model6.fit(vec_x_train, y_train, epochs=10)
plt.plot(history6.history['loss'])
plt.show()
Epoch 1/10
1875/1875 [==============================] - 22s 11ms/step - loss: 1.0379
Epoch 2/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5774
Epoch 3/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5495
Epoch 4/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5438
Epoch 5/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5511
Epoch 6/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5491
Epoch 7/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5486
Epoch 8/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5434
Epoch 9/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5430
Epoch 10/10
1875/1875 [==============================] - 21s 11ms/step - loss: 0.5493
initializer = tf.keras.initializers.Zeros()
model7 = Sequential()
model7.add(Dense(units=800,activation='sigmoid',kernel_initializer=initializer))
model7.add(Dense(units=500,activation='sigmoid'))
model7.add(Dense(units=10,activation='softmax'))
opt = SGD(lr=0.1)
model7.compile(optimizer=opt,loss="sparse_categorical_crossentropy")
history7 = model7.fit(vec_x_train, y_train, epochs=10)
plt.plot(history7.history['loss'])
plt.show()
Epoch 1/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.4633
Epoch 2/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.4137
Epoch 3/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.3176
Epoch 4/10
1875/1875 [==============================] - 22s 11ms/step - loss: 1.4551
Epoch 5/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.5990
Epoch 6/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.4875
Epoch 7/10
1875/1875 [==============================] - 21s 11ms/step - loss: 1.4152
Epoch 8/10
1875/1875 [==============================] - 21s 11ms/step - loss: 1.2797
Epoch 9/10
1875/1875 [==============================] - 21s 11ms/step - loss: 1.2166
Epoch 10/10
1875/1875 [==============================] - 22s 12ms/step - loss: 1.2160
initializer = tf.keras.initializers.Zeros()
model8 = Sequential()
model8.add(Dense(units=800,activation='sigmoid',kernel_initializer=initializer))
model8.add(Dense(units=500,activation='sigmoid'))
model8.add(Dense(units=10,activation='softmax'))
opt = SGD(lr=9)
model8.compile(optimizer=opt,loss="sparse_categorical_crossentropy")
reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='loss', min_lr=0.001)
history8 = model8.fit(vec_x_train, y_train, epochs=10, callbacks=[reduce_lr])
plt.plot(history8.history['loss'])
plt.show()
Epoch 1/10
1875/1875 [==============================] - 22s 12ms/step - loss: 140.9298
Epoch 2/10
1875/1875 [==============================] - 22s 12ms/step - loss: 145.3908
Epoch 3/10
1875/1875 [==============================] - 21s 11ms/step - loss: 147.6190
Epoch 4/10
1875/1875 [==============================] - 22s 12ms/step - loss: 153.2048
Epoch 5/10
1875/1875 [==============================] - 22s 12ms/step - loss: 161.5226
Epoch 6/10
1875/1875 [==============================] - 22s 12ms/step - loss: 171.3516
Epoch 7/10
1875/1875 [==============================] - 22s 12ms/step - loss: 171.1482
Epoch 8/10
1875/1875 [==============================] - 22s 12ms/step - loss: 175.3111
Epoch 9/10
1875/1875 [==============================] - 22s 12ms/step - loss: 175.2261
Epoch 10/10
1875/1875 [==============================] - 22s 12ms/step - loss: 178.9890