Skip to content

Commit e13c9ac

Browse files
committed
add model zoo
1 parent 91e7325 commit e13c9ac

File tree

4 files changed

+237
-0
lines changed

4 files changed

+237
-0
lines changed

modelzoo/cifar10_nin.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Network in Network CIFAR10 Model
2+
# Original source: https://gist.github.com/mavenlin/e56253735ef32c3c296d
3+
# License: unknown
4+
5+
# Download pretrained weights from:
6+
# https://s3.amazonaws.com/lasagne/recipes/pretrained/cifar10/model.pkl
7+
8+
from lasagne.layers import InputLayer, DropoutLayer, FlattenLayer
9+
from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
10+
from lasagne.layers import Pool2DLayer as PoolLayer
11+
12+
13+
def build_model():
14+
net = {}
15+
net['input'] = InputLayer((None, 3, 32, 32))
16+
net['conv1'] = ConvLayer(net['input'],
17+
num_filters=192,
18+
filter_size=5,
19+
pad=2)
20+
net['cccp1'] = ConvLayer(net['conv1'], num_filters=160, filter_size=1)
21+
net['cccp2'] = ConvLayer(net['cccp1'], num_filters=96, filter_size=1)
22+
net['pool1'] = PoolLayer(net['cccp2'],
23+
pool_size=3,
24+
stride=2,
25+
mode='max',
26+
ignore_border=False)
27+
net['drop3'] = DropoutLayer(net['pool1'], p=0.5)
28+
net['conv2'] = ConvLayer(net['drop3'],
29+
num_filters=192,
30+
filter_size=5,
31+
pad=2)
32+
net['cccp3'] = ConvLayer(net['conv2'], num_filters=192, filter_size=1)
33+
net['cccp4'] = ConvLayer(net['cccp3'], num_filters=192, filter_size=1)
34+
net['pool2'] = PoolLayer(net['cccp4'],
35+
pool_size=3,
36+
stride=2,
37+
mode='average_exc_pad',
38+
ignore_border=False)
39+
net['drop6'] = DropoutLayer(net['pool2'], p=0.5)
40+
net['conv3'] = ConvLayer(net['drop6'],
41+
num_filters=192,
42+
filter_size=3,
43+
pad=1)
44+
net['cccp5'] = ConvLayer(net['conv3'], num_filters=192, filter_size=1)
45+
net['cccp6'] = ConvLayer(net['cccp5'], num_filters=10, filter_size=1)
46+
net['pool3'] = PoolLayer(net['cccp6'],
47+
pool_size=8,
48+
mode='average_exc_pad',
49+
ignore_border=False)
50+
net['output'] = FlattenLayer(net['pool3'])
51+
52+
return net

modelzoo/googlenet.py

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# BLVC Googlenet, model from the paper:
2+
# "Going Deeper with Convolutions"
3+
# Original source:
4+
# https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
5+
# License: unrestricted use
6+
7+
# Download pretrained weights from:
8+
# https://s3.amazonaws.com/lasagne/recipes/pretrained/imagenet/blvc_googlenet.pkl
9+
10+
from lasagne.layers import InputLayer
11+
from lasagne.layers import DenseLayer
12+
from lasagne.layers import ConcatLayer
13+
from lasagne.layers import NonlinearityLayer
14+
from lasagne.layers import GlobalPoolLayer
15+
from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
16+
from lasagne.layers.dnn import MaxPool2DDNNLayer as PoolLayerDNN
17+
from lasagne.layers import MaxPool2DLayer as PoolLayer
18+
from lasagne.layers import LocalResponseNormalization2DLayer as LRNLayer
19+
from lasagne.nonlinearities import softmax, linear
20+
21+
22+
def build_inception_module(name, input_layer, nfilters):
23+
# nfilters: (pool_proj, 1x1, 3x3_reduce, 3x3, 5x5_reduce, 5x5)
24+
net = {}
25+
net['pool'] = PoolLayerDNN(input_layer, pool_size=3, stride=1, pad=1)
26+
net['pool_proj'] = ConvLayer(net['pool'], nfilters[0], 1)
27+
28+
net['1x1'] = ConvLayer(input_layer, nfilters[1], 1)
29+
30+
net['3x3_reduce'] = ConvLayer(input_layer, nfilters[2], 1)
31+
net['3x3'] = ConvLayer(net['3x3_reduce'], nfilters[3], 3, pad=1)
32+
33+
net['5x5_reduce'] = ConvLayer(input_layer, nfilters[4], 1)
34+
net['5x5'] = ConvLayer(net['5x5_reduce'], nfilters[5], 5, pad=2)
35+
36+
net['output'] = ConcatLayer([
37+
net['1x1'],
38+
net['3x3'],
39+
net['5x5'],
40+
net['pool_proj'],
41+
])
42+
43+
return {'{}/{}'.format(name, k): v for k, v in net.items()}
44+
45+
46+
def build_model():
47+
net = {}
48+
net['input'] = InputLayer((None, 3, None, None))
49+
net['conv1/7x7_s2'] = ConvLayer(net['input'], 64, 7, stride=2, pad=3)
50+
net['pool1/3x3_s2'] = PoolLayer(net['conv1/7x7_s2'],
51+
pool_size=3,
52+
stride=2,
53+
ignore_border=False)
54+
net['pool1/norm1'] = LRNLayer(net['pool1/3x3_s2'], alpha=0.00002, k=1)
55+
net['conv2/3x3_reduce'] = ConvLayer(net['pool1/norm1'], 64, 1)
56+
net['conv2/3x3'] = ConvLayer(net['conv2/3x3_reduce'], 192, 3, pad=1)
57+
net['conv2/norm2'] = LRNLayer(net['conv2/3x3'], alpha=0.00002, k=1)
58+
net['pool2/3x3_s2'] = PoolLayer(net['conv2/norm2'], pool_size=3, stride=2)
59+
60+
net.update(build_inception_module('inception_3a',
61+
net['pool2/3x3_s2'],
62+
[32, 64, 96, 128, 16, 32]))
63+
net.update(build_inception_module('inception_3b',
64+
net['inception_3a/output'],
65+
[64, 128, 128, 192, 32, 96]))
66+
net['pool3/3x3_s2'] = PoolLayer(net['inception_3b/output'],
67+
pool_size=3, stride=2)
68+
69+
net.update(build_inception_module('inception_4a',
70+
net['pool3/3x3_s2'],
71+
[64, 192, 96, 208, 16, 48]))
72+
net.update(build_inception_module('inception_4b',
73+
net['inception_4a/output'],
74+
[64, 160, 112, 224, 24, 64]))
75+
net.update(build_inception_module('inception_4c',
76+
net['inception_4b/output'],
77+
[64, 128, 128, 256, 24, 64]))
78+
net.update(build_inception_module('inception_4d',
79+
net['inception_4c/output'],
80+
[64, 112, 144, 288, 32, 64]))
81+
net.update(build_inception_module('inception_4e',
82+
net['inception_4d/output'],
83+
[128, 256, 160, 320, 32, 128]))
84+
net['pool4/3x3_s2'] = PoolLayer(net['inception_4e/output'],
85+
pool_size=3, stride=2)
86+
87+
net.update(build_inception_module('inception_5a',
88+
net['pool4/3x3_s2'],
89+
[128, 256, 160, 320, 32, 128]))
90+
net.update(build_inception_module('inception_5b',
91+
net['inception_5a/output'],
92+
[128, 384, 192, 384, 48, 128]))
93+
94+
net['pool5/7x7_s1'] = GlobalPoolLayer(net['inception_5b/output'])
95+
net['loss3/classifier'] = DenseLayer(net['pool5/7x7_s1'],
96+
num_units=1000,
97+
nonlinearity=linear)
98+
net['prob'] = NonlinearityLayer(net['loss3/classifier'],
99+
nonlinearity=softmax)
100+
return net

modelzoo/vgg16.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# VGG-16, 16-layer model from the paper:
2+
# "Very Deep Convolutional Networks for Large-Scale Image Recognition"
3+
# Original source: https://gist.github.com/ksimonyan/211839e770f7b538e2d8
4+
# License: non-commercial use only
5+
6+
# Download pretrained weights from:
7+
# https://s3.amazonaws.com/lasagne/recipes/pretrained/imagenet/vgg16.pkl
8+
9+
from lasagne.layers import InputLayer, DenseLayer, NonlinearityLayer
10+
from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
11+
from lasagne.layers import Pool2DLayer as PoolLayer
12+
from lasagne.nonlinearities import softmax
13+
14+
15+
def build_model():
16+
net = {}
17+
net['input'] = InputLayer((None, 3, 224, 224))
18+
net['conv1_1'] = ConvLayer(net['input'], 64, 3, pad=1)
19+
net['conv1_2'] = ConvLayer(net['conv1_1'], 64, 3, pad=1)
20+
net['pool1'] = PoolLayer(net['conv1_2'], 2)
21+
net['conv2_1'] = ConvLayer(net['pool1'], 128, 3, pad=1)
22+
net['conv2_2'] = ConvLayer(net['conv2_1'], 128, 3, pad=1)
23+
net['pool2'] = PoolLayer(net['conv2_2'], 2)
24+
net['conv3_1'] = ConvLayer(net['pool2'], 256, 3, pad=1)
25+
net['conv3_2'] = ConvLayer(net['conv3_1'], 256, 3, pad=1)
26+
net['conv3_3'] = ConvLayer(net['conv3_2'], 256, 3, pad=1)
27+
net['pool3'] = PoolLayer(net['conv3_3'], 2)
28+
net['conv4_1'] = ConvLayer(net['pool3'], 512, 3, pad=1)
29+
net['conv4_2'] = ConvLayer(net['conv4_1'], 512, 3, pad=1)
30+
net['conv4_3'] = ConvLayer(net['conv4_2'], 512, 3, pad=1)
31+
net['pool4'] = PoolLayer(net['conv4_3'], 2)
32+
net['conv5_1'] = ConvLayer(net['pool4'], 512, 3, pad=1)
33+
net['conv5_2'] = ConvLayer(net['conv5_1'], 512, 3, pad=1)
34+
net['conv5_3'] = ConvLayer(net['conv5_2'], 512, 3, pad=1)
35+
net['pool5'] = PoolLayer(net['conv5_3'], 2)
36+
net['fc6'] = DenseLayer(net['pool5'], num_units=4096)
37+
net['fc7'] = DenseLayer(net['fc6'], num_units=4096)
38+
net['fc8'] = DenseLayer(net['fc7'], num_units=1000, nonlinearity=None)
39+
net['prob'] = NonlinearityLayer(net['fc8'], softmax)
40+
41+
return net

modelzoo/vgg19.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# VGG-19, 19-layer model from the paper:
2+
# "Very Deep Convolutional Networks for Large-Scale Image Recognition"
3+
# Original source: https://gist.github.com/ksimonyan/3785162f95cd2d5fee77
4+
# License: non-commercial use only
5+
6+
# Download pretrained weights from:
7+
# https://s3.amazonaws.com/lasagne/recipes/pretrained/imagenet/vgg19.pkl
8+
9+
from lasagne.layers import InputLayer, DenseLayer, NonlinearityLayer
10+
from lasagne.layers.dnn import Conv2DDNNLayer as ConvLayer
11+
from lasagne.layers import Pool2DLayer as PoolLayer
12+
from lasagne.nonlinearities import softmax
13+
14+
15+
def build_model():
16+
net = {}
17+
net['input'] = InputLayer((None, 3, 224, 224))
18+
net['conv1_1'] = ConvLayer(net['input'], 64, 3, pad=1)
19+
net['conv1_2'] = ConvLayer(net['conv1_1'], 64, 3, pad=1)
20+
net['pool1'] = PoolLayer(net['conv1_2'], 2)
21+
net['conv2_1'] = ConvLayer(net['pool1'], 128, 3, pad=1)
22+
net['conv2_2'] = ConvLayer(net['conv2_1'], 128, 3, pad=1)
23+
net['pool2'] = PoolLayer(net['conv2_2'], 2)
24+
net['conv3_1'] = ConvLayer(net['pool2'], 256, 3, pad=1)
25+
net['conv3_2'] = ConvLayer(net['conv3_1'], 256, 3, pad=1)
26+
net['conv3_3'] = ConvLayer(net['conv3_2'], 256, 3, pad=1)
27+
net['conv3_4'] = ConvLayer(net['conv3_3'], 256, 3, pad=1)
28+
net['pool3'] = PoolLayer(net['conv3_4'], 2)
29+
net['conv4_1'] = ConvLayer(net['pool3'], 512, 3, pad=1)
30+
net['conv4_2'] = ConvLayer(net['conv4_1'], 512, 3, pad=1)
31+
net['conv4_3'] = ConvLayer(net['conv4_2'], 512, 3, pad=1)
32+
net['conv4_4'] = ConvLayer(net['conv4_3'], 512, 3, pad=1)
33+
net['pool4'] = PoolLayer(net['conv4_4'], 2)
34+
net['conv5_1'] = ConvLayer(net['pool4'], 512, 3, pad=1)
35+
net['conv5_2'] = ConvLayer(net['conv5_1'], 512, 3, pad=1)
36+
net['conv5_3'] = ConvLayer(net['conv5_2'], 512, 3, pad=1)
37+
net['conv5_4'] = ConvLayer(net['conv5_3'], 512, 3, pad=1)
38+
net['pool5'] = PoolLayer(net['conv5_4'], 2)
39+
net['fc6'] = DenseLayer(net['pool5'], num_units=4096)
40+
net['fc7'] = DenseLayer(net['fc6'], num_units=4096)
41+
net['fc8'] = DenseLayer(net['fc7'], num_units=1000, nonlinearity=None)
42+
net['prob'] = NonlinearityLayer(net['fc8'], softmax)
43+
44+
return net

0 commit comments

Comments
 (0)