NN.add('conv1', ConvLayer(3, 64, 224, 3)) NN.add('conv2', ConvLayer(64, 64, 224, 3)) NN.add('pool1', PoolingLayer(64, 112, 2)) NN.add('conv3', ConvLayer(64, 128, 112, 3)) NN.add('conv4', ConvLayer(128, 128, 112, 3)) NN.add('pool2', PoolingLayer(128, 56, 2)) NN.add('conv5', ConvLayer(128, 256, 56, 3)) NN.add('conv6', ConvLayer(256, 256, 56, 3)) NN.add('conv7', ConvLayer(256, 256, 56, 3)) NN.add('conv8', ConvLayer(256, 256, 56, 3)) NN.add('pool3', PoolingLayer(256, 28, 2)) NN.add('conv9', ConvLayer(256, 512, 28, 3)) NN.add('conv10', ConvLayer(512, 512, 28, 3)) NN.add('conv11', ConvLayer(512, 512, 28, 3)) NN.add('conv12', ConvLayer(512, 512, 28, 3)) NN.add('pool4', PoolingLayer(512, 14, 2)) NN.add('conv13', ConvLayer(512, 512, 14, 3)) NN.add('conv14', ConvLayer(512, 512, 14, 3)) NN.add('conv15', ConvLayer(512, 512, 14, 3)) NN.add('conv16', ConvLayer(512, 512, 14, 3)) NN.add('pool5', PoolingLayer(512, 7, 2)) NN.add('fc1', FCLayer(512, 4096, 7)) NN.add('fc2', FCLayer(4096, 4096, 1)) NN.add('fc3', FCLayer(4096, 1000, 1))
3D Memory", in ASPLOS'17. April, 2017), and that you send us a citation of your work. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the BSD-3 License for more details. You should have received a copy of the Modified BSD-3 License along with this program. If not, see <https://opensource.org/licenses/BSD-3-Clause>. """ ''' AlexNet Used in Eyeriss paper. ''' from collections import OrderedDict from nn_dataflow import Layer, FCLayer LAYERS = OrderedDict() LAYERS['conv1'] = Layer(3, 96, 55, 11, 4) LAYERS['conv2'] = Layer(48, 256, 27, 5) LAYERS['conv3'] = Layer(256, 384, 13, 3) LAYERS['conv4'] = Layer(192, 384, 13, 3) LAYERS['conv5'] = Layer(192, 256, 13, 3) LAYERS['fc1'] = FCLayer(256, 4096, 6) LAYERS['fc2'] = FCLayer(4096, 4096, 1) LAYERS['fc3'] = FCLayer(4096, 1000, 1)
NN.add('pool4', PoolingLayer(832, 7, 3, strd=2), prevs=_PREVS) _PREVS = ('pool4', ) # Inception 5. _PREVS = add_inception(NN, '5a', 7, 832, 256, 160, 320, 32, 128, 128, prevs=_PREVS) _PREVS = add_inception(NN, '5b', 7, 832, 384, 192, 384, 48, 128, 128, prevs=_PREVS) NN.add('pool5', PoolingLayer(1024, 1, 7, strd=2), prevs=_PREVS) NN.add('fc', FCLayer(1024, 1000, 1))
''' NN = Network('AlexNet') NN.set_input(InputLayer(3, 224)) NN.add('conv1_a', ConvLayer(3, 48, 55, 11, 4), prevs=(NN.INPUT_LAYER_KEY, )) NN.add('conv1_b', ConvLayer(3, 48, 55, 11, 4), prevs=(NN.INPUT_LAYER_KEY, )) NN.add('pool1_a', PoolingLayer(48, 27, 3, strd=2), prevs=('conv1_a', )) NN.add('pool1_b', PoolingLayer(48, 27, 3, strd=2), prevs=('conv1_b', )) # Norm layer is ignored. NN.add('conv2_a', ConvLayer(48, 128, 27, 5), prevs=('pool1_a', )) NN.add('conv2_b', ConvLayer(48, 128, 27, 5), prevs=('pool1_b', )) NN.add('pool2_a', PoolingLayer(128, 13, 3, strd=2), prevs=('conv2_a', )) NN.add('pool2_b', PoolingLayer(128, 13, 3, strd=2), prevs=('conv2_b', )) # Norm layer is ignored. NN.add('conv3_a', ConvLayer(256, 192, 13, 3), prevs=('pool2_a', 'pool2_b')) NN.add('conv3_b', ConvLayer(256, 192, 13, 3), prevs=('pool2_a', 'pool2_b')) NN.add('conv4_a', ConvLayer(192, 192, 13, 3), prevs=('conv3_a', )) NN.add('conv4_b', ConvLayer(192, 192, 13, 3), prevs=('conv3_b', )) NN.add('conv5_a', ConvLayer(192, 128, 13, 3), prevs=('conv4_a', )) NN.add('conv5_b', ConvLayer(192, 128, 13, 3), prevs=('conv4_b', )) NN.add('pool3_a', PoolingLayer(128, 6, 3, strd=2), prevs=('conv5_a', )) NN.add('pool3_b', PoolingLayer(128, 6, 3, strd=2), prevs=('conv5_b', )) NN.add('fc1', FCLayer(256, 4096, 6), prevs=('pool3_a', 'pool3_b')) NN.add('fc2', FCLayer(4096, 4096, 1)) NN.add('fc3', FCLayer(4096, 1000, 1))
Simonyan and Zisserman, 2014 ''' from collections import OrderedDict from nn_dataflow import Layer, FCLayer LAYERS = OrderedDict() LAYERS['conv1'] = Layer(3, 64, 224, 3) LAYERS['conv2'] = Layer(64, 64, 224, 3) LAYERS['conv3'] = Layer(64, 128, 112, 3) LAYERS['conv4'] = Layer(128, 128, 112, 3) LAYERS['conv5'] = Layer(128, 256, 56, 3) LAYERS['conv6'] = Layer(256, 256, 56, 3) LAYERS['conv7'] = Layer(256, 256, 56, 3) LAYERS['conv8'] = Layer(256, 512, 28, 3) LAYERS['conv9'] = Layer(512, 512, 28, 3) LAYERS['conv10'] = Layer(512, 512, 28, 3) LAYERS['conv11'] = Layer(512, 512, 14, 3) LAYERS['conv12'] = Layer(512, 512, 14, 3) LAYERS['conv13'] = Layer(512, 512, 14, 3) LAYERS['fc1'] = FCLayer(512, 4096, 7) LAYERS['fc2'] = FCLayer(4096, 4096, 1) LAYERS['fc3'] = FCLayer(4096, 1000, 1)