import tensorflow as tf
from tensorflow.keras import datasets, layers, models
(x_train,y_train),(x_test, y_test) = datasets.cifar10.load_data()
import matplotlib.pyplot as plt
plt.imshow(x_train[32000])
import cv2
img = x_train[32000]
def normImage(img):
return cv2.normalize(img, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
normalizedImg = normImage(img)
plt.imshow(x_train[32000])
plt.show()
plt.imshow(normalizedImg)
plt.show()
from tensorflow.keras.layers import Dense, Conv2D, Flatten
from tensorflow.keras import Sequential
model = Sequential()
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(Flatten())
model.add(Dense(units=300,activation='relu'))
model.add(Dense(units=10,activation='sigmoid'))
model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
, optimizer='sgd',metrics=['accuracy'])
x_train_norm = normImage(x_train)
x_test_norm = normImage(x_test)
model.fit(x_train_norm, y_train, epochs=10, validation_data=(x_test_norm, y_test))
Epoch 1/10
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: "`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?"
return dispatch_target(*args, **kwargs)
1563/1563 [==============================] - 14s 9ms/step - loss: 1.8081 - accuracy: 0.3606 - val_loss: 1.6135 - val_accuracy: 0.4228
Epoch 2/10
1563/1563 [==============================] - 13s 8ms/step - loss: 1.5309 - accuracy: 0.4634 - val_loss: 1.4295 - val_accuracy: 0.4985
Epoch 3/10
1563/1563 [==============================] - 13s 8ms/step - loss: 1.3683 - accuracy: 0.5163 - val_loss: 1.3074 - val_accuracy: 0.5342
Epoch 4/10
1563/1563 [==============================] - 13s 8ms/step - loss: 1.2510 - accuracy: 0.5587 - val_loss: 1.2609 - val_accuracy: 0.5521
Epoch 5/10
1563/1563 [==============================] - 12s 8ms/step - loss: 1.1641 - accuracy: 0.5931 - val_loss: 1.1847 - val_accuracy: 0.5786
Epoch 6/10
1563/1563 [==============================] - 12s 8ms/step - loss: 1.0860 - accuracy: 0.6205 - val_loss: 1.1585 - val_accuracy: 0.5939
Epoch 7/10
1563/1563 [==============================] - 13s 8ms/step - loss: 1.0170 - accuracy: 0.6451 - val_loss: 1.2504 - val_accuracy: 0.5626
Epoch 8/10
1563/1563 [==============================] - 12s 8ms/step - loss: 0.9469 - accuracy: 0.6724 - val_loss: 1.1274 - val_accuracy: 0.6021
Epoch 9/10
1563/1563 [==============================] - 13s 8ms/step - loss: 0.8791 - accuracy: 0.6965 - val_loss: 1.1508 - val_accuracy: 0.5959
Epoch 10/10
1563/1563 [==============================] - 13s 8ms/step - loss: 0.8103 - accuracy: 0.7228 - val_loss: 1.1628 - val_accuracy: 0.5979
model = Sequential()
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(Flatten())
model.add(Dense(units=300,activation='relu'))
model.add(Dense(units=100,activation='relu'))
model.add(Dense(units=10,activation='sigmoid'))
model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
, optimizer='sgd',metrics=['accuracy'])
x_train_norm = normImage(x_train)
x_test_norm = normImage(x_test)
model.fit(x_train_norm, y_train, epochs=10, validation_data=(x_test_norm, y_test))
Epoch 1/10
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: "`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?"
return dispatch_target(*args, **kwargs)
1563/1563 [==============================] - 16s 10ms/step - loss: 1.8077 - accuracy: 0.3531 - val_loss: 1.7092 - val_accuracy: 0.3795
Epoch 2/10
1563/1563 [==============================] - 15s 10ms/step - loss: 1.4882 - accuracy: 0.4727 - val_loss: 1.4556 - val_accuracy: 0.4774
Epoch 3/10
1563/1563 [==============================] - 15s 10ms/step - loss: 1.3328 - accuracy: 0.5259 - val_loss: 1.3653 - val_accuracy: 0.5109
Epoch 4/10
1563/1563 [==============================] - 15s 10ms/step - loss: 1.2180 - accuracy: 0.5675 - val_loss: 1.2439 - val_accuracy: 0.5603
Epoch 5/10
1563/1563 [==============================] - 15s 10ms/step - loss: 1.1108 - accuracy: 0.6076 - val_loss: 1.2102 - val_accuracy: 0.5726
Epoch 6/10
1563/1563 [==============================] - 15s 10ms/step - loss: 1.0013 - accuracy: 0.6466 - val_loss: 1.1489 - val_accuracy: 0.5986
Epoch 7/10
1563/1563 [==============================] - 15s 10ms/step - loss: 0.8895 - accuracy: 0.6868 - val_loss: 1.0954 - val_accuracy: 0.6201
Epoch 8/10
1563/1563 [==============================] - 15s 10ms/step - loss: 0.7793 - accuracy: 0.7279 - val_loss: 1.1516 - val_accuracy: 0.6111
Epoch 9/10
1563/1563 [==============================] - 15s 10ms/step - loss: 0.6665 - accuracy: 0.7667 - val_loss: 1.2171 - val_accuracy: 0.5926
Epoch 10/10
1563/1563 [==============================] - 15s 10ms/step - loss: 0.5463 - accuracy: 0.8109 - val_loss: 1.2256 - val_accuracy: 0.6165
model.summary()
Model: "sequential_8"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_13 (Conv2D) (None, 30, 30, 32) 896
conv2d_14 (Conv2D) (None, 28, 28, 32) 9248
flatten_8 (Flatten) (None, 25088) 0
dense_19 (Dense) (None, 300) 7526700
dense_20 (Dense) (None, 100) 30100
dense_21 (Dense) (None, 10) 1010
=================================================================
Total params: 7,567,954
Trainable params: 7,567,954
Non-trainable params: 0
_________________________________________________________________
from tensorflow.keras.layers import Dense, Conv2D, Flatten,MaxPooling2D
model = Sequential()
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(Flatten())
model.add(Dense(units=300,activation='relu'))
model.add(Dense(units=100,activation='relu'))
model.add(Dense(units=10,activation='sigmoid'))
model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
, optimizer='sgd',metrics=['accuracy'])
x_train_norm = normImage(x_train)
x_test_norm = normImage(x_test)
model.fit(x_train_norm, y_train, epochs=10, validation_data=(x_test_norm, y_test))
model.summary()
Epoch 1/10
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: "`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?"
return dispatch_target(*args, **kwargs)
1563/1563 [==============================] - 11s 7ms/step - loss: 1.9169 - accuracy: 0.3085 - val_loss: 1.7179 - val_accuracy: 0.3828
Epoch 2/10
1563/1563 [==============================] - 11s 7ms/step - loss: 1.5427 - accuracy: 0.4479 - val_loss: 1.4654 - val_accuracy: 0.4769
Epoch 3/10
1563/1563 [==============================] - 11s 7ms/step - loss: 1.3722 - accuracy: 0.5097 - val_loss: 1.3240 - val_accuracy: 0.5212
Epoch 4/10
1563/1563 [==============================] - 12s 7ms/step - loss: 1.2444 - accuracy: 0.5576 - val_loss: 1.4254 - val_accuracy: 0.5047
Epoch 5/10
1563/1563 [==============================] - 11s 7ms/step - loss: 1.1513 - accuracy: 0.5932 - val_loss: 1.2200 - val_accuracy: 0.5704
Epoch 6/10
1563/1563 [==============================] - 12s 7ms/step - loss: 1.0679 - accuracy: 0.6253 - val_loss: 1.1040 - val_accuracy: 0.6027
Epoch 7/10
1563/1563 [==============================] - 11s 7ms/step - loss: 0.9937 - accuracy: 0.6507 - val_loss: 1.0668 - val_accuracy: 0.6230
Epoch 8/10
1563/1563 [==============================] - 11s 7ms/step - loss: 0.9191 - accuracy: 0.6783 - val_loss: 1.0684 - val_accuracy: 0.6246
Epoch 9/10
1563/1563 [==============================] - 11s 7ms/step - loss: 0.8506 - accuracy: 0.7015 - val_loss: 1.0138 - val_accuracy: 0.6442
Epoch 10/10
1563/1563 [==============================] - 11s 7ms/step - loss: 0.7836 - accuracy: 0.7261 - val_loss: 0.9735 - val_accuracy: 0.6560
Model: "sequential_9"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_15 (Conv2D) (None, 30, 30, 32) 896
max_pooling2d_4 (MaxPooling (None, 15, 15, 32) 0
2D)
conv2d_16 (Conv2D) (None, 13, 13, 32) 9248
flatten_9 (Flatten) (None, 5408) 0
dense_22 (Dense) (None, 300) 1622700
dense_23 (Dense) (None, 100) 30100
dense_24 (Dense) (None, 10) 1010
=================================================================
Total params: 1,663,954
Trainable params: 1,663,954
Non-trainable params: 0
_________________________________________________________________
from tensorflow.keras.layers import Dense, Conv2D, Flatten,MaxPooling2D
model = Sequential()
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(MaxPooling2D(pool_size=(4, 4)))
model.add(layers.Conv2D(32,(3, 3) ,activation='relu',input_shape=(32,32,3)))
model.add(Flatten())
model.add(Dense(units=300,activation='relu'))
model.add(Dense(units=100,activation='relu'))
model.add(Dense(units=10,activation='sigmoid'))
model.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
, optimizer='sgd',metrics=['accuracy'])
x_train_norm = normImage(x_train)
x_test_norm = normImage(x_test)
model.summary()
Model: "sequential_10"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_17 (Conv2D) (None, 30, 30, 32) 896
max_pooling2d_5 (MaxPooling (None, 7, 7, 32) 0
2D)
conv2d_18 (Conv2D) (None, 5, 5, 32) 9248
flatten_10 (Flatten) (None, 800) 0
dense_25 (Dense) (None, 300) 240300
dense_26 (Dense) (None, 100) 30100
dense_27 (Dense) (None, 10) 1010
=================================================================
Total params: 281,554
Trainable params: 281,554
Non-trainable params: 0
_________________________________________________________________
model.fit(x_train_norm, y_train, epochs=10, validation_data=(x_test_norm, y_test))
Epoch 1/10
/usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:1096: UserWarning: "`sparse_categorical_crossentropy` received `from_logits=True`, but the `output` argument was produced by a sigmoid or softmax activation and thus does not represent logits. Was this intended?"
return dispatch_target(*args, **kwargs)
1563/1563 [==============================] - 10s 6ms/step - loss: 2.0467 - accuracy: 0.2473 - val_loss: 1.8234 - val_accuracy: 0.3554
Epoch 2/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.6398 - accuracy: 0.4078 - val_loss: 1.5495 - val_accuracy: 0.4431
Epoch 3/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.4554 - accuracy: 0.4761 - val_loss: 1.4163 - val_accuracy: 0.4926
Epoch 4/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.3552 - accuracy: 0.5132 - val_loss: 1.3294 - val_accuracy: 0.5233
Epoch 5/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.2832 - accuracy: 0.5431 - val_loss: 1.2327 - val_accuracy: 0.5615
Epoch 6/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.2227 - accuracy: 0.5649 - val_loss: 1.2811 - val_accuracy: 0.5455
Epoch 7/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.1676 - accuracy: 0.5871 - val_loss: 1.1549 - val_accuracy: 0.5887
Epoch 8/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.1143 - accuracy: 0.6066 - val_loss: 1.1798 - val_accuracy: 0.5824
Epoch 9/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.0664 - accuracy: 0.6248 - val_loss: 1.1122 - val_accuracy: 0.6097
Epoch 10/10
1563/1563 [==============================] - 9s 6ms/step - loss: 1.0220 - accuracy: 0.6402 - val_loss: 1.0993 - val_accuracy: 0.6163