Skip to content

Instantly share code, notes, and snippets.

View dhuynh95's full-sized avatar

DanyWin dhuynh95

View GitHub Profile
@dhuynh95
dhuynh95 / imports.py
Last active September 23, 2019 06:09
Article 1 Snippet A
from fastai import *
from fastai.vision import *
from fastai_autoencoder.bottleneck import VAEBottleneck
from fastai_autoencoder.callback import VAEHook
from fastai_autoencoder.util import *
from fastai_autoencoder.vision.learn import VisionAELearner
from mnist_model import create_decoder, create_encoder_denseblock
@dhuynh95
dhuynh95 / loading.py
Last active September 23, 2019 06:09
Article 1 Snippet 2
train_size = 512
train_size = int(train_size * 1.25)
bs = 128
size = 28
data, valid_data = get_data(train_size,bs=bs,size=size)
# Architectural parameters of our model
conv = nn.Conv2d
act_fn = nn.ReLU
@dhuynh95
dhuynh95 / plot_rec.py
Created September 23, 2019 06:17
Article 1 Snippet 3
x,y = data.one_batch()
learn.plot_rec(x)
@dhuynh95
dhuynh95 / training.py
Created September 23, 2019 06:21
Article 1 Snippet 4
n_epoch = 250
lr = 1e-2
learn.fit_one_cycle(n_epoch,lr)
n_epoch = 250
lr = 1e-2 / 2
cbs = [kl_hook]
learn.fit_one_cycle(n_epoch,lr,callbacks=cbs)
@dhuynh95
dhuynh95 / plot_rec_steps.py
Created September 28, 2019 22:00
Article 1 Snippet 5
learn.plot_rec_steps(x)
@dhuynh95
dhuynh95 / learn.py
Created September 29, 2019 14:09
Article 1 Snippet 6
# Architectural parameters of our model
conv = nn.Conv2d
act_fn = nn.ReLU
bn = nn.BatchNorm2d
rec_loss = "mse"
# Encoder architecture
enc_fn = create_encoder_denseblock
enc_args = {
"n_dense":3,
@dhuynh95
dhuynh95 / bs_finder.py
Created November 3, 2019 09:49
Use of bs_finder
bs_find(learn,lr=lr,bs=bs,num_it=num_it,n_batch=n_batch,beta=beta).plot()
@dhuynh95
dhuynh95 / rossmann_bs_finder.py
Created November 3, 2019 09:38
Bs finder for Rossmann data
lr = 1e-3
bs = 64
beta = 0.999
wd = 0.2
num_it = 5000
n_batch = 20
bs_find(learn,lr=lr,num_it=num_it,n_batch=n_batch,bs=bs,beta=beta,wd=wd).plot()
@dhuynh95
dhuynh95 / bnn_convert.py
Created November 28, 2019 18:54
Helper functions to turn regular NNs to BNNs
class CustomDropout(nn.Module):
"""Custom Dropout module to be used as a baseline for MC Dropout"""
def __init__(self, p:float, activate=True):
super().__init__()
self.activate = activate
self.p = p
def forward(self, x):
return nn.functional.dropout(x, self.p, training=self.training or self.activate)
@dhuynh95
dhuynh95 / convert_bnn.py
Created November 28, 2019 18:55
Convert a NN to a BNN
# Convert nn.Dropout to CustomDropout module
get_args = lambda dp : {"p" : dp.p}
convert_layers(learn.model,nn.Dropout,CustomDropout,get_args)
# Turn on the stochasticity, I use verbose just to make sure it's working fine
switch_custom_dropout(learn.model,True,verbose=True)