import tensorflow as tf

            cell_bw = tf.contrib.rnn.GRUCell(embed_size // 2)
            outputs, _ = tf.nn.bidirectional_dynamic_rnn(cell, cell_bw, dec, dtype=tf.float32)
            outputs = tf.concat(outputs, 2)
        self.Z_hat = tf.layers.dense(outputs, 1 + fourier_window_size // 2)
        self.loss1 = tf.reduce_mean(tf.abs(self.Y_hat - self.Y))
        self.loss2 = tf.reduce_mean(tf.abs(self.Z_hat - self.Z))
        self.loss = self.loss1 + self.loss2
        self.optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(self.loss)


