Skip to content

Instantly share code, notes, and snippets.

View jamescalam's full-sized avatar
👻

James Briggs jamescalam

👻
View GitHub Profile
@jamescalam
jamescalam / rotating_surface.py
Last active March 11, 2020 09:38
Matplotlib animation of rotating surface
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation, cm
from mpl_toolkits.mplot3d import Axes3D
# create a figure
fig = plt.figure()
# initialise 3D Axes
ax = Axes3D(fig)
@jamescalam
jamescalam / meditations_text.py
Last active April 4, 2020 17:19
Code snippet for part of data cleansing process for Meditations data import.
import requests
import re
# import Meditations
response = requests.get('http://classics.mit.edu/Antoninus/meditations.mb.txt')
data = response.text
# clean the text
data = data.split("Translated by George Long")[1].replace("-", "").split("THE END")[0]
data = re.sub("BOOK [A-Z]+\n", "", data)
@jamescalam
jamescalam / meditations_char2idx.py
Last active April 1, 2020 16:28
Short code for building mapping of character to index (char2idx) and index to character (idx2char).
char2idx = {c:i for i, c in enumerate(vocab)}
idx2char = np.array(vocab)
@jamescalam
jamescalam / meditations_gru.py
Last active April 1, 2020 18:58
Model definition for simple GRU network in TF Keras.
model = tf.keras.Sequential([
tf.keras.layers.Embedding(len(vocab), EMBED_DIM,
batch_input_shape=[BATCH_SIZE, None]),
tf.keras.layers.GRU(UNITS, return_sequences=True,
stateful=True,
dropout=0.1),
tf.keras.layers.Dense(len(vocab))
@jamescalam
jamescalam / meditations_save_model.py
Created April 1, 2020 16:40
Snippet showing how to setup model checkpoint saving using built-in call backs function
checkpoint = tf.keras.callbacks.ModelCheckpoint(
filepath='./training_checkpoints/ckpt_{epoch}',
save_weights_only=True
)
history = model.fit(dataset, epochs=EPOCHS, callbacks=[checkpoint_callback])
@jamescalam
jamescalam / meditations_load_model.py
Created April 1, 2020 16:44
Snippet showing how to load a model from saved weights. We load with batch size of 1 ready for text generation.
model = build_model(len(vocab), EMBED_DIM, UNITS, 1)
model.load_weights(tf.train.latest_checkpoint('./training_checkpoints')
model.build(tf.TensorShape([1, None]))
@jamescalam
jamescalam / meditations_generation.py
Created April 1, 2020 16:46
Example snippet on how to generate text using TF Keras model.
meditations = "From " # initialize our meditations text
# convert to indices
input_eval = tf.expand_dims([char2idx[c] for x in meditations], 0)
# initialize states
model.reset_states()
# loop through, generating 100K characters
for i in range(100000):
y_hat = model(input_eval) # make a prediction
y_hat = tf.squeeze(y_hat, 0) # remove batch dimension
predicted_idx = tf.random.categorical(y_hat, num_samples=1)[-1,0].numpy()
@jamescalam
jamescalam / meditations_char_dataset.py
Created April 1, 2020 17:08
Snippet of how to convert indexed data into a TF Dataset object.
char_dataset = tf.data.Dataset.from_tensor_slices(data_idx)
@jamescalam
jamescalam / meditations_sequences.py
Created April 1, 2020 17:09
Snippet showing how to split a dataset into sequences with .batch method in TF Dataset object.
sequences = char_dataset.batch(SEQ_LEN+1, drop_remainder=True)
@jamescalam
jamescalam / meditations_split_input_output.py
Created April 1, 2020 17:11
Snippet showing how to split data for sequence prediction.
def split_input_output(chunk):
return chunk[:-1], chunk[1:]
dataset = sequences.map(split_input_output)