import tensorflow as tf

	def inference(self, forward_only=None):

		embed_inputs = tf.nn.embedding_lookup(self.embedding_init, self.x) ## (batch_size, seq_len, 100)

		with tf.variable_scope('hidden', reuse=forward_only):
			with tf.variable_scope('lstm_cell'):
				lstm_cell = tf.nn.rnn_cell.LSTMCell(num_units=self.num_hidden, use_peepholes=False, 
													# forget_bias=0.0, 
													activation=tf.nn.relu, 
													# initializer=tf.truncated_normal_initializer(stddev=0.1),
													# initializer=tf.random_uniform_initializer(-0.003, 0.003),
													initializer=tf.contrib.layers.xavier_initializer(),
													state_is_tuple=True)
				if not forward_only:
					lstm_cell = tf.nn.rnn_cell.DropoutWrapper(cell=lstm_cell, output_keep_prob=self.dropout_output)
				# lstm_cell = tf.nn.rnn_cell.MultiRNNCell(cells=[lstm_cell] * 4, state_is_tuple=True)

			if not forward_only:
				embed_inputs = tf.nn.dropout(embed_inputs, keep_prob=self.dropout_input)

			rnn_outputs, output_states  = tf.nn.dynamic_rnn(
				cell=lstm_cell,
