from matplotlib import pyplot
from keras.datasets import cifar10
from keras.models import Sequential
from keras.utils import np_utils
from keras.layers.core import Dense, Activation, Dropout, Flatten
from tensorflow.keras.utils import to_categorical
from tensorflow.keras import Input
import tensorflow as tf
(trainX, trainy), (testX, testy) = cifar10.load_data()
print('Train: X=%s, y=%s' % (trainX.shape, trainy.shape))
print('Test: X=%s, y=%s' % (testX.shape, testy.shape))
for i in range(9):
pyplot.subplot(330 + 1 + i)
pyplot.imshow(trainX[i])
pyplot.show()
# Here's© a Deep Dumb MLP (DDMLP)
model = Sequential()
#input
model.add(Input(shape=trainX[0].shape))
print(model.output_shape)
model.add(Flatten())
print(model.output_shape)
model.add(Dropout(0.2))
model.add(Dense(100))
model.add(Activation('relu'))
#second layer
model.add(Dense(100))
model.add(Activation('relu'))
#output
model.add(Dense(10))
model.add(Activation('softmax'))
trainy
trainX = trainX.astype('float32')
testX = testX.astype('float32')
trainX /= 255.0
testX /= 255.0
trainy = to_categorical(trainy)
testy = to_categorical(testy)
model.compile(loss='categorical_crossentropy', optimizer = tf.keras.optimizers.SGD
(learning_rate=0.1, name='SGD'), metrics = ['accuracy'])
model.fit(trainX, trainy, epochs=5, validation_data = (testX, testy))
scores = model.evaluate(testX, testy, verbose=1)
print('Test loss:', scores[0])
print('Test accuracy:', scores[1])
scores
from __future__ import print_function
from pickle import FALSE
import tensorflow as tf
import tensorflow_addons as tfa
import keras
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, Lambda, MaxPooling2D
from tensorflow.keras import backend as K
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.utils import to_categorical
import os
data_augment = False
batch_size = 64
num_classes = 10
epochs = 10
save_dir = '/tmp/saved_models'
model_name = 'keras_cifar10_trained_model.h5'
# The data, split between train and test sets:
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
# Convert class vectors to binary class matrices.
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
# initiate RMSprop optimizer
opt = tf.keras.optimizers.RMSprop(learning_rate=0.01)
# Let's train the model using RMSprop
model.compile(loss='categorical_crossentropy',
optimizer=opt,
metrics=['accuracy'])
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255.0
x_test /= 255.0
if data_augment:
#TO DO
print("Not implemented, yet")
else:
model.fit(x_train, y_train,batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test),
shuffle=True)
# Save model and weights
if not os.path.isdir(save_dir):
os.makedirs(save_dir)
model_path = os.path.join(save_dir, model_name)
model.save(model_path)
print('Saved trained model at %s ' % model_path)
# Score trained model.
scores = model.evaluate(x_test, y_test, verbose=1)
print('Test loss:', scores[0])
print('Test accuracy:', scores[1])f