import tensorflow as tf

                    strides = [1] + strides + [1]

                    filter_ = get_variable('filter_{}'.format(k),
                                           [filter_height, filter_width, in_channels, out_channels])
                    encoder_inputs_ = tf.nn.conv2d(encoder_inputs_, filter_, strides, padding='SAME')

                    if encoder.batch_norm:
                        encoder_inputs_ = tf.layers.batch_normalization(encoder_inputs_, training=training,
                                                                        name='conv_batch_norm_{}'.format(k))
                    if encoder.conv_activation is not None and encoder.conv_activation.lower() == 'relu':
                        encoder_inputs_ = tf.nn.relu(encoder_inputs_)

                    encoder_input_length_ = tf.to_int32(tf.ceil(encoder_input_length_ / strides[1]))

                feature_size = encoder_inputs_.shape[2].value
                channels = encoder_inputs_.shape[3].value
                time_steps = tf.shape(encoder_inputs_)[1]

                encoder_inputs_ = tf.reshape(encoder_inputs_, [batch_size, time_steps, feature_size * channels])
                conv_outputs_ = encoder_inputs_
