Tensorboard, GANs




CS256

Chris Pollett

Dec 1 2021

Outline

Introduction

Using Tensorboard

Tensorboard MNIST Example

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
   )

Remarks on and Using the Example

In-Class Exercise

Generative Adverserial Models

GAN Architecture

Training a GAN

GAN Generator Output

Deep Convolutional GANs

Progressive Growing of GANs