CS256
Chris Pollett
Dec 1 2021
import keras import tensorflow as tf from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout from tensorflow.keras.optimizers import RMSprop import numpy as np import os import time os.environ['TF_CPP_MIN_LOG_LEVEL']='2' #top level directory to log output of training root_logdir = os.path.join(os.curdir, "my_logs") #function to compute a path to a sub folder to hold #logs for a given run def per_run_logdir(): run_id = time.strftime("run_%Y_m_%d-%H_%M_%S") return os.path.join(root_logdir, run_id) run_logdir = per_run_logdir() #create a new callback that will do logging my_tensorboard_callback = keras.callbacks.TensorBoard(run_logdir) (x_train, y_train), (x_test, y_test) = mnist.load_data() # xtrain is originally 28x28 grayscale uint8's between 0-255 x_train = x_train.reshape(60000, 784) x_test = x_test.reshape(10000, 784) x_train = x_train.astype('float32') x_test = x_test.astype('float32') x_train /= 255 x_test /= 255 y_train = tf.keras.utils.to_categorical(y_train, 10) y_test = tf.keras.utils.to_categorical(y_test, 10) model = Sequential() model.add(Dense(512, activation='relu', input_shape = (784,))) model.add(Dropout(0.2)) model.add(Dense(512, activation = 'relu')) model.add(Dropout(0.2)) model.add(Dense(10, activation = 'softmax')) model.compile(loss = 'categorical_crossentropy', optimizer = RMSprop(), metrics = ['accuracy']) history = model.fit(x_train, y_train, batch_size = 128, epochs = 20, verbose = 1, validation_data = (x_test, y_test), callbacks=[my_tensorboard_callback] #tell fit to use callback defined above )
tensorboard --logdir=./my_logs --port=8080