Skip to content

Instantly share code, notes, and snippets.

# This implements the ideas in the paper "Neural Ordinary Differential Equations"
# in as simple a form as possible, using only autograd. It is not efficient.
# It is not useful for any practical purpose.
# Use [torchdiffeq](https://github.com/rtqichen/torchdiffeq) for any real use.
#
# > [1] Ricky T. Q. Chen, Yulia Rubanova, Jesse Bettencourt, David Duvenaud.
# "Neural Ordinary Differential Equations." *Advances in Neural Processing Information Systems.* 2018.
# [[arxiv]](https://arxiv.org/abs/1806.07366)
#
# The implementation is based on the
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@johnhw
johnhw / prime_dance.py
Created March 17, 2019 11:07
Animate the "flower" pattern of primes, using the Hungarian algorithm to ensure smooth interpolation
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from collections import defaultdict
import colorsys
import munkres # provides Hungarian algorithm
import scipy.spatial.distance as dist
import functools
import os
from tqdm.auto import trange, tqdm
def tqdm_train_loop(train_fn, num_epochs, train_loader, val_fn=None):
# each epoch
with trange(num_epochs, unit="epoch") as epoch_t:
for epoch in epoch_t:
# each batch
with tqdm(train_loader, leave=False, unit='batch', postfix='') as batch_t:
for batch_idx, (features, targets) in enumerate(batch_t):
cost = train_fn(features, labels)
batch_t.postfix = f"cost {cost.item():.2f}"
import numpy as np
def softmax(a,b):
return np.log(np.exp(a)+np.exp(b))
def softmin(a,b):
return -softmax(-a, -b)
def softrank(a, b):
return softmin(a,b), softmax(a,b)
@johnhw
johnhw / trace_frame.py
Created July 8, 2019 16:09
Determine source of function calls in Python
import inspect
class tracked:
"""Class to remember the execution frame
that a function call was made in."""
def __init__(self, fn):
self.fn = fn
@johnhw
johnhw / bivariate_matplotlib.py
Last active October 26, 2023 18:50
Bivariate colormap in matplotlib
# bivariate colormaps in matplotlib
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
## Bivariate colormapping
from scipy.interpolate import RegularGridInterpolator
@johnhw
johnhw / plot_connected_points.py
Created July 18, 2019 18:14
Matplotlib draw connections between two sets of 2D points efficiently
from matplotlib.collections import LineCollection
def plot_connected_pairs(a,b,*args,**kwargs):
"""
Draw lines between two arrays of 2D points.
a and b must be the same shape, both [N,2] arrays to be plotted.
Parameters:
-----------
a: [N,2] array of points to plot from
import numpy as np
from sklearn.metrics import confusion_matrix
from collections import defaultdict
def itr(confusion_matrix, timings, eps=1e-8):
"""Take a confusion matrix of the form
(actual) a b c d
(intended)
a 10 0 1 9
# Converts Ordnance Survey Terrian 50 United Kingdom data to a simple NumPy array of terrain altitudes
# The original OS data is freely downloadable from: https://www.ordnancesurvey.co.uk/business-government/products/terrain-50
# Directly converts the zipped terrain file to a NPZ file
# Resulting array is a (24600, 13200) array of float64
# Requirements:
# * pycrs
# * lxml
import os, sys