Machine learning projects I’ve done

UnCropper

This is a de-convolutional neural network that uncrops an image and generates the surrounding area. I fed it cropped images and had it guess the original. It doesn’t generate unknown parts of the image very well.

The top row is the original image, the middle is the cropped image, and the bottom is what my NN generated.

Convolutional Autoencoder

This Convolves an image to a small vector, and then deconvolves it back to the original image. If you convolve two images, average or interpolate their compressed forms as vectors, and then decompress that, you can continuously morph between images

CIFAR GAN

Generative Adversarial Networks: A neural network that generates fake images, and one that determines if an image is real or one of the other network’s fakes compete with each other and get better together. The result is that the faker learns to generate images that look real to humans! That is, unless you look too closely.
I also made an animated version of this. Each image is generated from a random vector. Vectors which are near each other in the noise space generate similar images. I picked 16 random vectors, put the images they generated on a grid, and randomly moved those vectors throughout the noise space, and animated it. Here is a video of what it looks like:

Anime Face GAN

This is the same as CIFAR GAN, but I trained it on images of anime faces. Fake faces look a lot weirder than fake animals, planes, and cars like in the CIFAR GAN.
I also did the same animation for this as the CIFAR GAN:

Snake REINFORCE NN

I made a neural network that learns how to play snake throuh the REINFORCE algorithm. I reward the NN when it gets food, and punish it when it dies, and it learned to play pretty well. Granted, it can’t think ahead very well. Note: I made this on another repository, YLUJO with my friend Maggie Von Nortwick. There is a failed attempt of this same project on this repository, so look at the one on YLUJLO instead if you want to see how this was made. I have the functionality for actor-critic in the current model, but I shut it off because the snake task is simple enough that actor-critic over-complicates things and makes it perform worse. I also have a double Q model in a separate branch that plays even better!