In [5]:
import numpy as np
import time
import sys
sys.path.append('../tools/')
import my_io as my_io
import caffe
import os
import pickle
import itertools
from scipy.misc import imresize
import lasagne
from lasagne.layers import cuda_convnet
import theano
import theano.tensor as T
MEAN_FILE = '/media/raid_arr/data/ndsb/augment/testaug_mean.npy'
TRAIN_DB = '/media/raid_arr/data/ndsb/folds/train0_lmdb/'
TEST_DB = '/media/raid_arr/data/ndsb/folds/test0_lmdb/'
N = 20000 # Chunk size
In [ ]:
def build_model(input_width, input_height, output_dim,
batch_size=BATCH_SIZE, dimshuffle=True):
l_in = lasagne.layers.InputLayer(
shape=(batch_size, 1, input_width, input_height),
)
if not dimshuffle:
l_in = cuda_convnet.bc01_to_c01b(l_in)
l_conv1 = cuda_convnet.Conv2DCCLayer(
l_in,
num_filters=32,
filter_size=(5, 5),
nonlinearity=lasagne.nonlinearities.rectify,
W=lasagne.init.Uniform(),
dimshuffle=dimshuffle,
)
l_pool1 = cuda_convnet.MaxPool2DCCLayer(
l_conv1,
ds=(2, 2),
dimshuffle=dimshuffle,
)
l_conv2 = cuda_convnet.Conv2DCCLayer(
l_pool1,
num_filters=32,
filter_size=(5, 5),
nonlinearity=lasagne.nonlinearities.rectify,
W=lasagne.init.Uniform(),
dimshuffle=dimshuffle,
)
l_pool2 = cuda_convnet.MaxPool2DCCLayer(
l_conv2,
ds=(2, 2),
dimshuffle=dimshuffle,
)
if not dimshuffle:
l_pool2 = cuda_convnet.c01b_to_bc01(l_pool2)
l_hidden1 = lasagne.layers.DenseLayer(
l_pool2,
num_units=256,
nonlinearity=lasagne.nonlinearities.rectify,
W=lasagne.init.Uniform(),
)
l_hidden1_dropout = lasagne.layers.DropoutLayer(l_hidden1, p=0.5)
l_out = lasagne.layers.DenseLayer(
l_hidden1_dropout,
num_units=output_dim,
nonlinearity=lasagne.nonlinearities.softmax,
W=lasagne.init.Uniform(),
)
return l_out