import tensorflow as tf


        # Reshape input tensors to remove nunroll dim; will briefly restore later during RNN if necessary
        if cnn_rnn_zack:
            feats_audio = tf.reshape(feats_audio_nunroll, shape=[batch_size, rnn_nunroll + zack_hack, audio_nbands, audio_nchannels])
        else:
            feats_audio = tf.reshape(feats_audio_nunroll, shape=[batch_size * rnn_nunroll, audio_context_len, audio_nbands, audio_nchannels])
        feats_other = tf.reshape(feats_other_nunroll, shape=[batch_size * rnn_nunroll, nfeats])
        if mode != 'gen':
            targets = tf.reshape(targets_nunroll, shape=[batch_size * rnn_nunroll])
            target_weights = tf.reshape(target_weights_nunroll, shape=[batch_size * rnn_nunroll])

        # CNN
