Skip to content

Instantly share code, notes, and snippets.

def validate_csv(text, field_count=4):
# Quick validation check to make sure input is sane
return len(text.split(", ")) == field_count
def generate_rec(model, start_string, num_chars, temperature, expected_field_count):
invalid_record_count = 0
valid_record_count = 0
# Convert our start string to numbers (vectorizing)
input_eval = [char2idx[s] for s in start_string]
# Define loss function
def loss(labels, logits):
return tf.keras.losses.sparse_categorical_crossentropy(labels, logits, from_logits=True)
# Compile model
model.compile(optimizer='adam', loss=loss)
# Directory where the checkpoints will be saved
checkpoint_dir = './training_checkpoints'
def build_model(vocab_size, embedding_dim, rnn_units, batch_size):
dropout_rate = 0.2
rnn_initializer = 'glorot_uniform'
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim,
batch_input_shape=[batch_size, None]),
tf.keras.layers.Dropout(dropout_rate),
tf.keras.layers.LSTM(rnn_units,
return_sequences=True,
def split_input_target(chunk):
input_text = chunk[:-1]
target_text = chunk[1:]
return input_text, target_text
BATCH_SIZE = 64
BUFFER_SIZE = 10000
# Create TensorFlow training examples and targets
char_dataset = tf.data.Dataset.from_tensor_slices(text_as_int)
# Count the unique characters in the file
vocab = sorted(set(text))
# Creating a mapping from unique characters to indices
char2idx = {u:i for i, u in enumerate(vocab)}
idx2char = np.array(vocab)
text_as_int = np.array([char2idx[c] for c in text])
print (f'Training set contains {len(vocab)} unique characters')
print (f'First 20 characters -> index mappings')
@zredlined
zredlined / bikeshare_rec.json
Last active January 29, 2020 16:54
Example GBFS ride share record
{
"bike_id": "0cc988be-638e-4c4d-9e83-da461db37d35",
"epoch": 1579837235,
"is_disabled": 0,
"is_reserved": 0,
"jump_ebike_battery_level": "90%",
"jump_vehicle_name": "EVT822",
"jump_vehicle_type": "scooter",
"lat": 34.035088,
"locations": [
@zredlined
zredlined / threejs_create_pointcloud.js
Last active March 25, 2019 04:13
Three.js buffergeometry to render ARKit pointcloud data for blog
// Pointcloud
pointGeometry = new THREE.BufferGeometry();
var pointArray = [];
var colorArray = [];
for (i = 0; i < points_dataset.length; i++) {
// Space apart ARKit points appropriately into new environment
var x = points_dataset[i]["x"] * POINT_SPACING;
var y = points_dataset[i]["y"] * POINT_SPACING;
@zredlined
zredlined / d3_load_csv_asynchronously.js
Created March 25, 2019 03:34
Example code for blog showing D3's asynchronous loading of CSV files for visualization
<!-- D3js imports to load CSV data -->
<script src="https://d3js.org/d3-collection.v1.min.js"></script>
<script src="https://d3js.org/d3-dispatch.v1.min.js"></script>
<script src="https://d3js.org/d3-dsv.v1.min.js"></script>
<script src="https://d3js.org/d3-request.v1.min.js"></script>
<script src="https://d3js.org/d3-queue.v3.min.js"></script>
<!-- load multiple data asynchronously, defer visualization until complete -->
d3.queue()
.defer(d3.csv, "./data/spotmeka_points.csv")