import keras from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers import Conv2D, MaxPooling2D from keras import backend as K import matplotlib.pyplot as plt def plot_history(history): """Plot Results of Keras training""" plt.style.use("fivethirtyeight") epochs = list(range(1, len(history["loss"]) + 1)) plt.figure(figsize=(18, 6)) # Losses plt.subplot(1, 2, 1) plt.plot(epochs, history["loss"], "-o", ms=10, label="Training Loss") plt.plot(epochs, history["val_loss"], "-*", ms=10, label="Validation Loss") plt.legend() plt.xlabel("Epoch") plt.ylabel("Loss") plt.title("Losses") # Accuracy plt.subplot(1, 2, 2) plt.plot(epochs, history["acc"], "-o", ms=10, label="Training Acc") plt.plot(epochs, history["val_acc"], "-*", ms=10, label="Validation Acc") plt.legend() plt.xlabel("Epoch") plt.ylabel("Acc") plt.title("Accuracy") plt.suptitle("Training Curves", y=1.05) def get_options(slack): command_dict = {"functions": {}, "attributes": {}} # Modules for d in dir(slack): if not d.startswith("_"): command_dict["functions"][d] = [] command_dict["attributes"][d] = [] # Iterate through methods and attributes for dd in dir(getattr(slack, d)): if not dd.startswith("_"): # List of methods and attributes l = dir(getattr(getattr(slack, d), dd)) # Method (function) if "__call__" in l: command_dict["functions"][d].append(dd) # Attributes else: command_dict["attributes"][d].append(dd) return command_dict def get_data_and_model(): batch_size = 128 num_classes = 10 epochs = 12 # input image dimensions img_rows, img_cols = 28, 28 # the data, split between train and test sets (x_train, y_train), (x_test, y_test) = mnist.load_data() if K.image_data_format() == "channels_first": x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols) x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols) input_shape = (1, img_rows, img_cols) else: x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) input_shape = (img_rows, img_cols, 1) x_train = x_train.astype("float32") x_test = x_test.astype("float32") x_train /= 255 x_test /= 255 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 = keras.utils.to_categorical(y_train, num_classes) y_test = keras.utils.to_categorical(y_test, num_classes) model = Sequential() model.add( Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=input_shape) ) model.add(Conv2D(64, (3, 3), activation="relu")) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(128, activation="relu")) model.add(Dropout(0.5)) model.add(Dense(num_classes, activation="softmax")) model.compile( loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=["accuracy"], ) return x_train, x_test, y_train, y_test, model