Skip to content

Instantly share code, notes, and snippets.

@libfun
Last active July 17, 2017 13:50
Show Gist options
  • Save libfun/cb93a61c18a1b8fdff54793f49fe32df to your computer and use it in GitHub Desktop.
Save libfun/cb93a61c18a1b8fdff54793f49fe32df to your computer and use it in GitHub Desktop.
import lasagne
from lasagne.layers import InputLayer
from lasagne.layers.dnn import Conv3DDNNLayer
from lasagne.layers.dnn import Pool3DDNNLayer
from lasagne.layers import BatchNormLayer
from lasagne.layers import NonlinearityLayer
from lasagne.layers import ElemwiseSumLayer
from lasagne.layers import DenseLayer
from lasagne.nonlinearities import identity, softmax
def build_net():
"""Method for VoxResNet Building.
Returns
-------
dictionary
Network dictionary.
"""
net = {}
net['input'] = InputLayer((None, 1, 110, 110, 110))
net['conv1a'] = Conv3DDNNLayer(net['input'], 32, 3, pad='same',
nonlinearity=identity)
net['bn1a'] = BatchNormLayer(net['conv1a'])
net['relu1a'] = NonlinearityLayer(net['bn1a'])
net['conv1b'] = Conv3DDNNLayer(net['relu1a'], 32, 3, pad='same',
nonlinearity=identity)
net['bn1b'] = BatchNormLayer(net['conv1b'])
net['relu1b'] = NonlinearityLayer(net['bn1b'])
net['conv1c'] = Conv3DDNNLayer(net['relu1b'], 64, 3, stride=(2, 2, 2),
pad='same', nonlinearity=identity)
# VoxRes block 2
net['voxres2_bn1'] = BatchNormLayer(net['conv1c'])
net['voxres2_relu1'] = NonlinearityLayer(net['voxres2_bn1'])
net['voxres2_conv1'] = Conv3DDNNLayer(net['voxres2_relu1'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres2_bn2'] = BatchNormLayer(net['voxres2_conv1'])
net['voxres2_relu2'] = NonlinearityLayer(net['voxres2_bn2'])
net['voxres2_conv2'] = Conv3DDNNLayer(net['voxres2_relu2'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres2_out'] = ElemwiseSumLayer([net['conv1c'],
net['voxres2_conv2']])
# VoxRes block 3
net['voxres3_bn1'] = BatchNormLayer(net['voxres2_out'])
net['voxres3_relu1'] = NonlinearityLayer(net['voxres3_bn1'])
net['voxres3_conv1'] = Conv3DDNNLayer(net['voxres3_relu1'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres3_bn2'] = BatchNormLayer(net['voxres3_conv1'])
net['voxres3_relu2'] = NonlinearityLayer(net['voxres3_bn2'])
net['voxres3_conv2'] = Conv3DDNNLayer(net['voxres3_relu2'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres3_out'] = ElemwiseSumLayer([net['voxres2_out'],
net['voxres3_conv2']])
net['bn4'] = BatchNormLayer(net['voxres3_out'])
net['relu4'] = NonlinearityLayer(net['bn4'])
net['conv4'] = Conv3DDNNLayer(net['relu4'], 64, 3, stride=(2, 2, 2),
pad='same', nonlinearity=identity)
# VoxRes block 5
net['voxres5_bn1'] = BatchNormLayer(net['conv4'])
net['voxres5_relu1'] = NonlinearityLayer(net['voxres5_bn1'])
net['voxres5_conv1'] = Conv3DDNNLayer(net['voxres5_relu1'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres5_bn2'] = BatchNormLayer(net['voxres5_conv1'])
net['voxres5_relu2'] = NonlinearityLayer(net['voxres5_bn2'])
net['voxres5_conv2'] = Conv3DDNNLayer(net['voxres5_relu2'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres5_out'] = ElemwiseSumLayer([net['conv4'], net['voxres5_conv2']])
# VoxRes block 6
net['voxres6_bn1'] = BatchNormLayer(net['voxres5_out'])
net['voxres6_relu1'] = NonlinearityLayer(net['voxres6_bn1'])
net['voxres6_conv1'] = Conv3DDNNLayer(net['voxres6_relu1'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres6_bn2'] = BatchNormLayer(net['voxres6_conv1'])
net['voxres6_relu2'] = NonlinearityLayer(net['voxres6_bn2'])
net['voxres6_conv2'] = Conv3DDNNLayer(net['voxres6_relu2'], 64, 3,
pad='same', nonlinearity=identity)
net['voxres6_out'] = ElemwiseSumLayer([net['voxres5_out'],
net['voxres6_conv2']])
net['bn7'] = BatchNormLayer(net['voxres6_out'])
net['relu7'] = NonlinearityLayer(net['bn7'])
net['conv7'] = Conv3DDNNLayer(net['relu7'], 128, 3, stride=(2, 2, 2),
pad='same', nonlinearity=identity)
# VoxRes block 8
net['voxres8_bn1'] = BatchNormLayer(net['conv7'])
net['voxres8_relu1'] = NonlinearityLayer(net['voxres8_bn1'])
net['voxres8_conv1'] = Conv3DDNNLayer(net['voxres8_relu1'], 128, 3,
pad='same', nonlinearity=identity)
net['voxres8_bn2'] = BatchNormLayer(net['voxres8_conv1'])
net['voxres8_relu2'] = NonlinearityLayer(net['voxres8_bn2'])
net['voxres8_conv2'] = Conv3DDNNLayer(net['voxres8_relu2'], 128, 3,
pad='same', nonlinearity=identity)
net['voxres8_out'] = ElemwiseSumLayer([net['conv7'], net['voxres8_conv2']])
# VoxRes block 9
net['voxres9_bn1'] = BatchNormLayer(net['voxres8_out'])
net['voxres9_relu1'] = NonlinearityLayer(net['voxres9_bn1'])
net['voxres9_conv1'] = Conv3DDNNLayer(net['voxres9_relu1'], 128, 3,
pad='same', nonlinearity=identity)
net['voxres9_bn2'] = BatchNormLayer(net['voxres9_conv1'])
net['voxres9_relu2'] = NonlinearityLayer(net['voxres9_bn2'])
net['voxres9_conv2'] = Conv3DDNNLayer(net['voxres9_relu2'], 128, 3,
pad='same', nonlinearity=identity)
net['voxres9_out'] = ElemwiseSumLayer([net['voxres8_out'],
net['voxres9_conv2']])
net['pool10'] = Pool3DDNNLayer(net['voxres9_out'], 7)
net['fc11'] = DenseLayer(net['pool10'], 128)
net['prob'] = DenseLayer(net['fc11'], 2, nonlinearity=softmax)
return net
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment