docs: def build_alexnet(self, weights, output_layer=None):
          """ Connects graph of alexnet from weights """
          if output_layer is None:
              output_layer = self._output_layer
  
          #conv1
          #conv(11, 11, 96, 4, 4, padding='VALID', name='conv1')
          k_h = 11; k_w = 11; c_o = 96; s_h = 4; s_w = 4
          conv1_in = conv(self._input_node, weights.conv1W, weights.conv1b, k_h, k_w, c_o, s_h, s_w, padding="SAME", group=1)
          conv1 = tf.nn.relu(conv1_in)
          if output_layer == 'conv1':
              return tf.contrib.layers.flatten(conv1)
          
          #lrn1
          #lrn(2, 2e-05, 0.75, name='norm1')
          radius = 2; alpha = 2e-05; beta = 0.75; bias = 1.0
          lrn1 = tf.nn.local_response_normalization(conv1,
                                                    depth_radius=radius,
                                                    alpha=alpha,
                                                    beta=beta,
                                                    bias=bias)
          
          #maxpool1
          #max_pool(3, 3, 2, 2, padding='VALID', name='pool1')
          k_h = 3; k_w = 3; s_h = 2; s_w = 2; padding = 'VALID'
          maxpool1 = tf.nn.max_pool(lrn1, ksize=[1, k_h, k_w, 1], strides=[1, s_h, s_w, 1], padding=padding)
          
          
          #conv2
          #conv(5, 5, 256, 1, 1, group=2, name='conv2')
          k_h = 5; k_w = 5; c_o = 256; s_h = 1; s_w = 1; group = 2
          conv2_in = conv(maxpool1, weights.conv2W, weights.conv2b, k_h, k_w, c_o, s_h, s_w, padding="SAME", group=group)
          conv2 = tf.nn.relu(conv2_in)
          if output_layer == 'conv2':
              return tf.contrib.layers.flatten(conv2)
                  
          #lrn2
          #lrn(2, 2e-05, 0.75, name='norm2')
          radius = 2; alpha = 2e-05; beta = 0.75; bias = 1.0
          lrn2 = tf.nn.local_response_normalization(conv2,
                                                    depth_radius=radius,
                                                    alpha=alpha,
                                                    beta=beta,
                                                    bias=bias)
          
          #maxpool2
          #max_pool(3, 3, 2, 2, padding='VALID', name='pool2')                                                  
          k_h = 3; k_w = 3; s_h = 2; s_w = 2; padding = 'VALID'
          maxpool2 = tf.nn.max_pool(lrn2, ksize=[1, k_h, k_w, 1], strides=[1, s_h, s_w, 1], padding=padding)
          
          #conv3
          #conv(3, 3, 384, 1, 1, name='conv3')
          k_h = 3; k_w = 3; c_o = 384; s_h = 1; s_w = 1; group = 1
          conv3_in = conv(maxpool2, weights.conv3W, weights.conv3b, k_h, k_w, c_o, s_h, s_w, padding="SAME", group=group)
          conv3 = tf.nn.relu(conv3_in)
          if output_layer == 'conv3':
              return tf.contrib.layers.flatten(conv3)
          
          #conv4
          #conv(3, 3, 384, 1, 1, group=2, name='conv4')
          k_h = 3; k_w = 3; c_o = 384; s_h = 1; s_w = 1; group = 2
          conv4_in = conv(conv3, weights.conv4W, weights.conv4b, k_h, k_w, c_o, s_h, s_w, padding="SAME", group=group)
          conv4 = tf.nn.relu(conv4_in)
          if output_layer == 'conv4':
              return tf.contrib.layers.flatten(conv4)
          
          #conv5
          #conv(3, 3, 256, 1, 1, group=2, name='conv5')
          k_h = 3; k_w = 3; c_o = 256; s_h = 1; s_w = 1; group = 2
          conv5_in = conv(conv4, weights.conv5W, weights.conv5b, k_h, k_w, c_o, s_h, s_w, padding="SAME", group=group)
          conv5 = tf.nn.relu(conv5_in)
          if output_layer == 'conv5':
              return tf.contrib.layers.flatten(conv5)
          
          #maxpool5
          #max_pool(3, 3, 2, 2, padding='VALID', name='pool5')
          k_h = 3; k_w = 3; s_h = 2; s_w = 2; padding = 'VALID'
          maxpool5 = tf.nn.max_pool(conv5, ksize=[1, k_h, k_w, 1], strides=[1, s_h, s_w, 1], padding=padding)
  
          #fc6
          #fc(4096, name='fc6')
          fc6 = tf.nn.relu_layer(tf.reshape(maxpool5, [-1, int(np.prod(maxpool5.get_shape()[1:]))]), weights.fc6W, weights.fc6b)
          if output_layer == 'fc6':
              return fc6
              
          #fc7
          #fc(4096, name='fc7') 
          fc7 = tf.nn.relu_layer(fc6, weights.fc7W, weights.fc7b)
          if output_layer == 'fc7':
              return fc7
      
          #fc8
          #fc(num_cats, relu=False, name='fc8')
          fc8 = tf.nn.xw_plus_b(fc7, weights.fc8W, weights.fc8b)
          if output_layer == 'fc8':
              return fc8        
  
          #softmax
          sm = tf.nn.softmax(fc8)
          return sm