def testLearnMean(self): """Test learning to calculate a mean.""" batch_size = 16 sequence_length = 3 train_steps = 200 eval_steps = 20 cell_type = 'basic_rnn' cell_size = 8 optimizer_type = 'Momentum' learning_rate = 0.1 momentum = 0.9 loss_threshold = 0.1 def get_mean_input_fn(batch_size, sequence_length, seed=None): def input_fn(): # Create examples by choosing 'centers' and adding uniform noise. centers = math_ops.matmul( random_ops.random_uniform([batch_size, 1], -0.75, 0.75, dtype=dtypes.float32, seed=seed), array_ops.ones([1, sequence_length])) noise = random_ops.random_uniform( [batch_size, sequence_length], -0.25, 0.25, dtype=dtypes.float32, seed=seed) sequences = centers + noise inputs = array_ops.expand_dims(sequences, 2) labels = math_ops.reduce_mean(sequences, reduction_indices=[1]) return {'inputs': inputs}, labels return input_fn seq_columns = [ feature_column.real_valued_column('inputs', dimension=cell_size) ] config = run_config.RunConfig(tf_random_seed=6) sequence_regressor = dynamic_rnn_estimator.single_value_rnn_regressor( num_units=cell_size, sequence_feature_columns=seq_columns, cell_type=cell_type, optimizer_type=optimizer_type, learning_rate=learning_rate, momentum=momentum, config=config) train_input_fn = get_mean_input_fn(batch_size, sequence_length, 121) eval_input_fn = get_mean_input_fn(batch_size, sequence_length, 212) sequence_regressor.fit(input_fn=train_input_fn, steps=train_steps) evaluation = sequence_regressor.evaluate(input_fn=eval_input_fn, steps=eval_steps) loss = evaluation['loss'] self.assertLess( loss, loss_threshold, 'Loss should be less than {}; got {}'.format(loss_threshold, loss))
def testLearnMean(self): """Test learning to calculate a mean.""" batch_size = 16 sequence_length = 3 train_steps = 200 eval_steps = 20 cell_type = 'basic_rnn' cell_size = 8 optimizer_type = 'Momentum' learning_rate = 0.1 momentum = 0.9 loss_threshold = 0.1 def get_mean_input_fn(batch_size, sequence_length, seed=None): def input_fn(): # Create examples by choosing 'centers' and adding uniform noise. centers = math_ops.matmul( random_ops.random_uniform( [batch_size, 1], -0.75, 0.75, dtype=dtypes.float32, seed=seed), array_ops.ones([1, sequence_length])) noise = random_ops.random_uniform( [batch_size, sequence_length], -0.25, 0.25, dtype=dtypes.float32, seed=seed) sequences = centers + noise inputs = array_ops.expand_dims(sequences, 2) labels = math_ops.reduce_mean(sequences, reduction_indices=[1]) return {'inputs': inputs}, labels return input_fn seq_columns = [ feature_column.real_valued_column( 'inputs', dimension=cell_size) ] config = run_config.RunConfig(tf_random_seed=6) sequence_regressor = dynamic_rnn_estimator.single_value_rnn_regressor( num_units=cell_size, sequence_feature_columns=seq_columns, cell_type=cell_type, optimizer_type=optimizer_type, learning_rate=learning_rate, momentum=momentum, config=config) train_input_fn = get_mean_input_fn(batch_size, sequence_length, 121) eval_input_fn = get_mean_input_fn(batch_size, sequence_length, 212) sequence_regressor.fit(input_fn=train_input_fn, steps=train_steps) evaluation = sequence_regressor.evaluate( input_fn=eval_input_fn, steps=eval_steps) loss = evaluation['loss'] self.assertLess(loss, loss_threshold, 'Loss should be less than {}; got {}'.format(loss_threshold, loss))
def testLearnMean(self): """Test that `_SequenceRegressor` can learn to calculate a mean.""" batch_size = 16 sequence_length = 3 train_steps = 200 eval_steps = 20 cell_type = "basic_rnn" cell_size = 8 optimizer_type = "Momentum" learning_rate = 0.5 momentum = 0.9 loss_threshold = 0.1 def get_mean_input_fn(batch_size, sequence_length, seed=None): def input_fn(): # Create examples by choosing 'centers' and adding uniform noise. centers = tf.matmul( tf.random_uniform([batch_size, 1], -0.75, 0.75, dtype=tf.float32, seed=seed), tf.ones([1, sequence_length]), ) noise = tf.random_uniform([batch_size, sequence_length], -0.25, 0.25, dtype=tf.float32, seed=seed) sequences = centers + noise inputs = tf.expand_dims(sequences, 2) labels = tf.reduce_mean(sequences, reduction_indices=[1]) return {"inputs": inputs}, labels return input_fn config = tf.contrib.learn.RunConfig(tf_random_seed=6) sequence_regressor = dynamic_rnn_estimator.single_value_rnn_regressor( num_units=cell_size, cell_type=cell_type, optimizer_type=optimizer_type, learning_rate=learning_rate, momentum=momentum, config=config, ) train_input_fn = get_mean_input_fn(batch_size, sequence_length, 121) eval_input_fn = get_mean_input_fn(batch_size, sequence_length, 212) sequence_regressor.fit(input_fn=train_input_fn, steps=train_steps) evaluation = sequence_regressor.evaluate(input_fn=eval_input_fn, steps=eval_steps) loss = evaluation["loss"] self.assertLess(loss, loss_threshold, "Loss should be less than {}; got {}".format(loss_threshold, loss))