def METHOD_NAME(self):
    layer_configs = self.config
    feature_size = 784
    # define placeholder
    self.x = tf.placeholder(tf.float32, [None, feature_size], name="input_x")
    self.y = tf.placeholder(tf.int32, [None, self.label_size], name="input_y")
    label_number = 10
    # define network
    input_layer = self.x
    in_height = in_width = int(math.sqrt(feature_size))
    for i, layer_config in enumerate(layer_configs):
        input_layer = tf.nn.relu(self.get_layer(layer_config, input_layer, in_height, in_width, i))
    output_layer = input_layer
    if self.is_flatten(output_layer):
        output_layer = tf.contrib.layers.flatten(output_layer)  # flatten
    output_layer = tf.layers.dense(output_layer, label_number)
    child_logit = tf.nn.softmax_cross_entropy_with_logits(logits=output_layer, labels=self.y)
    child_loss = tf.reduce_mean(child_logit)
    self.train_step = tf.train.AdamOptimizer(learning_rate=0.0001).minimize(child_loss)
    child_accuracy = tf.equal(tf.argmax(output_layer, 1), tf.argmax(self.y, 1))
    self.accuracy = tf.reduce_mean(tf.cast(child_accuracy, "float"))  # add a reduce_mean