Skip to content

Instantly share code, notes, and snippets.

View Kaixhin's full-sized avatar
⚗️

Kai Arulkumaran Kaixhin

⚗️
View GitHub Profile
@Kaixhin
Kaixhin / plot.py
Last active March 26, 2020 16:26
Tensor plotting functions
from matplotlib import pyplot as plt
from mpl_toolkits import mplot3d
def scatter(X, Y, c=None, ax=None):
ax = plt.axes() if ax is None else ax
ax.scatter(X.numpy(), Y.numpy(), c=None if c is None else c.numpy())
return ax
def contour(X, Y, Z, levels=None, ax=None):
ax = plt.axes() if ax is None else ax
@Kaixhin
Kaixhin / acn.py
Created November 5, 2018 18:46
Associative Compression Networks
import os
import torch
from torch import nn, optim
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
from torchvision.utils import save_image
class Encoder(nn.Module):
@Kaixhin
Kaixhin / mcts.py
Last active May 23, 2018 22:53
Introduction to Monte Carlo Tree Search
"""
Introduction to Monte Carlo Tree Search
http://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/
"""
from copy import deepcopy
import datetime
from math import log, sqrt
from random import choice
@Kaixhin
Kaixhin / transformer.py
Created April 7, 2018 21:34
The Annotated Transformer
"""
The Annotated Transformer
http://nlp.seas.harvard.edu/2018/04/03/attention.html
Note: Only includes basic example, not real world example or multi-GPU training
"""
import numpy as np
import torch
import torch.nn as nn
@Kaixhin
Kaixhin / main.py
Last active October 20, 2017 20:19
Device-agnostic PyTorch code
import torch
def cast(cuda):
if cuda:
return lambda x: x.cuda()
else:
return lambda x: x
@Kaixhin
Kaixhin / lstms.py
Last active June 18, 2021 01:35
Collection of LSTMs
# Collection of LSTM cells (including forget gates)
# https://en.wikipedia.org/w/index.php?title=Long_short-term_memory&oldid=784163987
import torch
from torch import nn
from torch.nn import Parameter
from torch.nn import functional as F
from torch.nn.modules.utils import _pair
from torch.autograd import Variable
@Kaixhin
Kaixhin / perlin.lua
Last active January 2, 2017 17:01
Using Perlin Noise to Generate 2D Terrain and Water
--[[
-- Using Perlin Noise to Generate 2D Terrain and Water
-- http://gpfault.net/posts/perlin-noise.txt.html
--]]
local image = require 'image'
-- Fade function
local fade = function(t)
-- Provides continuous higher order derivatives for smoothness (this specifically is in the class of sigmoid functions)
@Kaixhin
Kaixhin / stochasticprocesses.lua
Created November 29, 2016 16:39
Random walks down Wall Street, Stochastic Processes in Python
--[[
-- Random walks down Wall Street, Stochastic Processes in Python
-- http://www.turingfinance.com/random-walks-down-wall-street-stochastic-processes-in-python/
--]]
local gnuplot = require 'gnuplot'
local model_parameters = {
all_s0 = 1000, -- Starting asset value
all_time = 800, -- Amount of time to simulate for
@Kaixhin
Kaixhin / prob-notation.md
Last active November 15, 2018 11:25
Probability notation

Probability notation

Note: Great refresher/glossary on probability/statistics and related topics here

Notation Definition
X Random variable
P(X) Probability distribution over random variable X
X ~ P(X) Random variable X follows (~) the probability distribution P(X) *
@Kaixhin
Kaixhin / gp.lua
Last active August 26, 2016 23:14
Gaussian Processes for Dummies
--[[
-- Gaussian Processes for Dummies
-- https://katbailey.github.io/post/gaussian-processes-for-dummies/
-- Note 1: The Cholesky decomposition requires positive-definite matrices, hence the addition of a small value to the diagonal (prevents zeros along the diagonal)
-- Note 2: This can also be thought of as adding a little noise to the observations
--]]
local gnuplot = require 'gnuplot'
-- Test data