'Model - deep, i.e. two-layer fully connected network model'

def deep_model(self, wide_inputs, n_inputs, n_nodes=[100, 50], use_dropout=False):

    cc_input_var = {}
    cc_embed_var = {}
    flat_vars = []
    if self.verbose:
        print(('-->    deep    model:    %s    categories,    %d    continuous' % (len(self.categorical_columns), n_inputs)))
    for (cc, cc_size) in self.categorical_columns.items():
        cc_input_var[cc] = tflearn.input_data(shape=[None, 1], name=('%s_in' % cc), dtype=tf.int32)
        cc_embed_var[cc] = tflearn.layers.embedding_ops.embedding(cc_input_var[cc], cc_size, 8, name=('deep_%s_embed' % cc))
        if self.verbose:
            print(('                %s_embed    =    %s' % (cc, cc_embed_var[cc])))
        flat_vars.append(tf.squeeze(cc_embed_var[cc], squeeze_dims=[1], name=('%s_squeeze' % cc)))
    network = tf.concat(([wide_inputs] + flat_vars), 1, name='deep_concat')
    for k in range(len(n_nodes)):
        network = tflearn.fully_connected(network, n_nodes[k], activation='relu', name=('deep_fc%d' % (k + 1)))
        if use_dropout:
            network = tflearn.dropout(network, 0.5, name=('deep_dropout%d' % (k + 1)))
    if self.verbose:
        print(('Deep    model    network    before    output    %s' % network))
    network = tflearn.fully_connected(network, 1, activation='linear', name='deep_fc_output', bias=False)
    network = tf.reshape(network, [(-1), 1])
    if self.verbose:
        print(('Deep    model    network    %s' % network))
    return network
