Projects

Neural network video visualization for TensorBoard

GitHub repository

beholder demo video

This is the capstone project of my Master’s degree. It is a plugin for Google’s TensorBoard, a visualization tool for TensorFlow, their machine learning framework.

The plugin is used for watching things like weights, activations, and gradients live as your network trains. It’s pretty close to being released; right now it’s being considered for adoption by the TensorBoard project itself. I’m excited to see what people do with it.


Mondrian style transfer

GitHub repository

I built this at the 2016 PPAML Summer School on probabilistic programming. I wrote it using Anglican. The task is: given a target image, generate a Mondrian-style image that looks like the target image.


WebPPL runtime errors

GitHub repository

I fixed runtime errors in WebPPL - before my work, runtime errors were uninterpretable by users.


Gradient visualization

GitHub repository
live demo

An interactive, web-based visualization of gradients. Uses plotly for plots.


Beethoven music generation

GitHub repository

Here’s two samples of the music we generated:

Part of a school project, built with two other students. We converted MIDI files to a text format, and used char-rnn to generate similar text, and converted it back into MIDI for playback.


Colorblindness simulation

GitHub repository

A side project - built to help people understand what their websites look like to people with different types of colorblindness.


City Issue Tracker

GitHub repository

A side project, later used as part of a class. Built for the city of Cedar Hills, UT to manage issues GitHubrted to the city.

Read More

Introduction to Chinese Restaurant Processes

Picture a Chinese restaurant. People come in one at a time, and decide where to sit. The first person picks a table. Everyone afterwards picks a table according to how many people are currently at each table - popular tables continue to gain popularity.

The probability of picking a particular occupied table is

The probability of picking an empty table is

Let’s walk through a short example:

Read More

Inducing Arithmetic Functions in Church

I’m going to go through the Inducing Arithmetic Functions example from Forest. Hopefully this can help you gain a little bit of familiarity with probabilistic programming. Here’s the code:

(define (random-arithmetic-fn)
  (if (flip 0.3)
      (random-combination (random-arithmetic-fn) 
                          (random-arithmetic-fn))
      (if (flip) 
          (lambda (x) x) 
          (random-constant-fn))))

(define (random-combination f g)
  (define op (uniform-draw (list + -)))
  (lambda (x) (op (f x) (g x))))

(define (random-constant-fn)
  (define i (sample-integer 10))
  (lambda (x) i))

(define (sample)
  (rejection-query
   (define my-proc (random-arithmetic-fn))
   (my-proc 2)
   (and (= (my-proc 0) 2)
        (= (my-proc 1) 3))))

(sample)
Read More

Screening off and Explaining Away

Thanks to Probabilistic Models of Cognition for helping me understand this.

In a graphical model, causal relationships are represented with an arrow going from the cause to the effect:

cause with an arrow to effect

In addition to cause and effect, you can read statistical dependence from a graphical model: $a$ and $b$ are statistically dependent if knowing something about $a$ influences your belief about $b$. This relationship is not always commutative; observing nodes changes the rules [of bayes ball]. Screening off and explaining away are names for rules about statistical dependence in a graphical model.

Read More