brain of mat kelcey...


running paula on tiliqua

June 13, 2026 at 10:10 PM | categories: eurorack, tiliqua, fpga

running paula rtl on the tiliqua fpga for eurorack!

keras3 to jax to tflite/liteRT via orbax

November 25, 2024 at 02:10 PM | categories: tflite, litert, keras3, jax, orbax

vmapped keras3 model inference in tflite

yolz; you only look o̶n̶c̶e̶ zero times

October 26, 2024 at 06:45 PM | categories: keras3, jax

zero shot object detection in kera3 jax

differentiable kalman filters in jax

March 29, 2024 at 06:45 PM | categories: jax

kalman filters have numerous parameters to tune, why not roll them out with jax and use backprop to fit them

a (larger) wavenet neural net running on an FPGA at (almost) 200,000 inferences / sec

October 12, 2023 at 01:00 PM | categories: eurorack, wavenet, fpga

wavenet on an mcu is fast, but, oh boy! wait until you see an even larger model running on an FPGA!

a wavenet neural net running on a microcontroller at (almost) 50,000 inferences / sec

September 09, 2023 at 09:00 PM | categories: mcu, wavenet, eurorack

wavenet can run at audio rates on an mcu, if you cache carefully, and be used for fun eurorack effects.

high performance ML with JAX

September 12, 2021 at 12:30 PM | categories: jax, talk

did a talk ay pycon on jax. check out the recording!

evolved channel selection

March 01, 2021 at 10:20 PM | categories: projects, ga, jax

rather than use all 13 channels in a multi spectral image for classification can we train a model that is robust to all combos, at all resolutions, and use a genetic algorithm to choose which are the most valuable? (spoiler; yes)

crazy large batch sizes

February 14, 2021 at 10:30 PM | categories: quick_hack, tpu, jax

a quick hack to see how fast we can get a v3-32 pod slice cranking with a global batch size of 170,000; tl-dr pretty fast!

solving y=mx+b... with jax on a tpu pod slice

February 07, 2021 at 01:00 PM | categories: tpu, ensemble_nets, jax, projects, haiku

a 4 (and a bit) part tutorial / colab / screencast series starting with jax fundamentals working up a data parallel approach to running on a cloud tpu pod slice... all focused on solving the toughest problem in machine learning; 1d y=mx+b

develomentor.com podcast interview

December 07, 2020 at 05:00 PM | categories: talk

was a guest on the develomentor podcast talking about random parts of my career

out of distribution detection using focal loss

December 02, 2020 at 01:00 PM | categories: objax, jax, projects

a series of small experiments on using focal loss to do out of distribution detection

my updated list of cool machine learning books

November 01, 2020 at 09:40 PM | categories: Uncategorized

it's been ten years so it's probably time to update my list of cool machine learning books.

dithernet very slow movie player

October 21, 2020 at 10:30 PM | categories: gan, jax, projects, objax

a GAN experiment to generate dithers for an eink screen minimising pixel change between frames for a very slow movie player.

ensemble networks

September 17, 2020 at 06:30 AM | categories: objax, projects, ensemble_nets, jax

ensemble nets; using jax vmap to batch over not just the inputs of a model but also sets of multiple models parameters.

metric learning for image similarity search in objax

September 02, 2020 at 12:00 PM | categories: objax, metric_learning, jax

an objax tutorial on using contrastive learning for image similarity.

objax on honeysuckle farm

August 30, 2020 at 02:45 PM | categories: talk

i think high level short explainer videos on jax frameworks while doing farm chores is going to be a growing genre.

the map interpretation of attention

August 19, 2020 at 10:30 AM | categories: talk, three_strikes_rule

a talk i did at melbourne ml/ai on how attention mechanism can be interpretated as a form of differentiable map. check out the recording!

self supervised learning and making use of unlabelled data

July 02, 2020 at 05:00 PM | categories: talk

a recording of a talk i did on self supervised learning at yow data.

a jax random embedding ensemble network

June 15, 2020 at 06:30 AM | categories: ensemble_nets, jax

random embedding networks can be used to generate weakly labelled data for contrastive learning and can be run in single model ensembles as a single forward pass in jax.

Next Page »

popular posts...

FPGA wavenets : eurorack audio processing neural nets running at ~200,000 inferences/sec (oct 2023)


dithernet very slow movie player : a GAN that slowly plays a movie over a year on an eink screen (oct 2020)


evolved channel selection : neural networks robust to any subset of input channels, at any resolution (mar 2021)


ensemble nets : training ensembles as a single model using jax on a tpu pod slice (sept 2020)


bnn : counting bees with a rasp pi (may 2018)


drivebot : learning to do laps with reinforcement learning and neural nets (feb 2016)


wikipedia philosophy : do all first links on wikipedia lead to philosophy? (aug 2011)


some papers from my time at google research / brain...

my honours thesis

the co-evolution of cooperative behaviour (1997) evolving neural nets with genetic algorithms for communication problems.

old projects...