Example #1
0
    def build_and_test_estimator(self, model_type):
        """Ensure that model trains and minimizes loss."""
        model = wide_deep.build_estimator(self.temp_dir, model_type)

        # Train for 1 step to initialize model and evaluate initial loss
        def get_input_fn(num_epochs, shuffle, batch_size):
            def input_fn():
                return wide_deep.input_fn(TEST_CSV,
                                          num_epochs=num_epochs,
                                          shuffle=shuffle,
                                          batch_size=batch_size)

            return input_fn

        model.train(input_fn=get_input_fn(1, True, 1), steps=1)
        initial_results = model.evaluate(input_fn=get_input_fn(1, False, 1))

        # Train for 100 epochs at batch size 3 and evaluate final loss
        model.train(input_fn=get_input_fn(100, True, 3))
        final_results = model.evaluate(input_fn=get_input_fn(1, False, 1))

        print('%s initial results:' % model_type, initial_results)
        print('%s final results:' % model_type, final_results)

        # Ensure loss has decreased, while accuracy and both AUCs have increased.
        self.assertLess(final_results['loss'], initial_results['loss'])
        self.assertGreater(final_results['auc'], initial_results['auc'])
        self.assertGreater(final_results['auc_precision_recall'],
                           initial_results['auc_precision_recall'])
        self.assertGreater(final_results['accuracy'],
                           initial_results['accuracy'])
Example #2
0
  def build_and_test_estimator(self, model_type):
    """Ensure that model trains and minimizes loss."""
    model = wide_deep.build_estimator(self.temp_dir, model_type)

    # Train for 1 step to initialize model and evaluate initial loss
    def get_input_fn(num_epochs, shuffle, batch_size):
      def input_fn():
        return wide_deep.input_fn(
            TEST_CSV, num_epochs=num_epochs, shuffle=shuffle,
            batch_size=batch_size)
      return input_fn

    model.train(input_fn=get_input_fn(1, True, 1), steps=1)
    initial_results = model.evaluate(input_fn=get_input_fn(1, False, 1))

    # Train for 100 epochs at batch size 3 and evaluate final loss
    model.train(input_fn=get_input_fn(100, True, 3))
    final_results = model.evaluate(input_fn=get_input_fn(1, False, 1))

    print('%s initial results:' % model_type, initial_results)
    print('%s final results:' % model_type, final_results)

    # Ensure loss has decreased, while accuracy and both AUCs have increased.
    self.assertLess(final_results['loss'], initial_results['loss'])
    self.assertGreater(final_results['auc'], initial_results['auc'])
    self.assertGreater(final_results['auc_precision_recall'],
                       initial_results['auc_precision_recall'])
    self.assertGreater(final_results['accuracy'], initial_results['accuracy'])