import tensorflow as tf


        # Flatten CNN and concat with other features
        zack_hack_div_2 = 0
        if cnn_rnn_zack:
            zack_hack_div_2 = zack_hack // 2
            cnn_output = tf.slice(cnn_output, [0, zack_hack_div_2, 0, 0], [-1, rnn_nunroll, -1, -1])
            nfeats_conv = reduce(lambda x, y: x * y, [int(x) for x in cnn_output.get_shape()[-2:]])
        else:
            nfeats_conv = reduce(lambda x, y: x * y, [int(x) for x in cnn_output.get_shape()[-3:]])
        feats_conv = tf.reshape(cnn_output, [batch_size * rnn_nunroll, nfeats_conv])
        nfeats_tot = nfeats_conv + nfeats
        feats_all = tf.concat(1, [feats_conv, feats_other])
        print('feats_cnn: {}'.format(feats_conv.get_shape()))
        print('feats_all: {}'.format(feats_all.get_shape()))

        # Project to RNN size
        rnn_output = feats_all
        rnn_output_size = nfeats_tot
        if do_rnn:
            with tf.variable_scope('rnn_proj'):
                rnn_proj_w = tf.get_variable('W', [nfeats_tot, rnn_size], initializer=tf.uniform_unit_scaling_initializer(factor=1.0, dtype=dtype), dtype=dtype)
                rnn_proj_b = tf.get_variable('b', [rnn_size], initializer=tf.constant_initializer(0.0), dtype=dtype)
