コード例 #1
0
    def _test_complete_flow(self, train_input_fn, eval_input_fn,
                            predict_input_fn, input_dimension, label_dimension,
                            batch_size):
        feature_columns = [
            feature_column.numeric_column('x', shape=(input_dimension, ))
        ]
        est = dnn.DNNEstimatorV2(head=regression_head.RegressionHead(
            label_dimension=label_dimension),
                                 hidden_units=(2, 2),
                                 feature_columns=feature_columns,
                                 model_dir=self._model_dir)

        # Train
        num_steps = 10
        est.train(train_input_fn, steps=num_steps)

        # Evaluate
        scores = est.evaluate(eval_input_fn)
        self.assertEqual(num_steps, scores[ops.GraphKeys.GLOBAL_STEP])
        self.assertIn('loss', six.iterkeys(scores))

        # Predict
        predictions = np.array([
            x[prediction_keys.PredictionKeys.PREDICTIONS]
            for x in est.predict(predict_input_fn)
        ])
        self.assertAllEqual((batch_size, label_dimension), predictions.shape)

        # Export
        feature_spec = feature_column.make_parse_example_spec(feature_columns)
        serving_input_receiver_fn = export.build_parsing_serving_input_receiver_fn(
            feature_spec)
        export_dir = est.export_saved_model(tempfile.mkdtemp(),
                                            serving_input_receiver_fn)
        self.assertTrue(gfile.Exists(export_dir))
コード例 #2
0
def _dnn_estimator_fn(weight_column=None, label_dimension=1, **kwargs):
  """Returns a DNNEstimator that uses regression_head."""
  return dnn.DNNEstimatorV2(
      head=regression_head.RegressionHead(
          weight_column=weight_column,
          label_dimension=label_dimension,
          # Tests in core (from which this test inherits) test the sum loss.
          loss_reduction=losses_utils.ReductionV2.SUM_OVER_BATCH_SIZE),
      **kwargs)
コード例 #3
0
    def _test_ckpt_converter(self, train_input_fn, eval_input_fn,
                             predict_input_fn, input_dimension,
                             label_dimension, batch_size, optimizer):

        # Create checkpoint in CannedEstimator v1.
        feature_columns_v1 = [
            feature_column._numeric_column('x', shape=(input_dimension, ))
        ]

        est_v1 = dnn.DNNEstimator(
            head=head_lib._regression_head(label_dimension=label_dimension),
            hidden_units=(2, 2),
            feature_columns=feature_columns_v1,
            model_dir=self._old_ckpt_dir,
            optimizer=optimizer)
        # Train
        num_steps = 10
        est_v1.train(train_input_fn, steps=num_steps)
        self.assertIsNotNone(est_v1.latest_checkpoint())
        self.assertTrue(est_v1.latest_checkpoint().startswith(
            self._old_ckpt_dir))

        # Convert checkpoint from v1 to v2.
        source_checkpoint = os.path.join(self._old_ckpt_dir, 'model.ckpt-10')
        source_graph = os.path.join(self._old_ckpt_dir, 'graph.pbtxt')
        target_checkpoint = os.path.join(self._new_ckpt_dir, 'model.ckpt-10')
        checkpoint_converter.convert_checkpoint('dnn', source_checkpoint,
                                                source_graph,
                                                target_checkpoint)

        # Create CannedEstimator V2 and restore from the converted checkpoint.
        feature_columns_v2 = [
            tf.feature_column.numeric_column('x', shape=(input_dimension, ))
        ]
        est_v2 = dnn.DNNEstimatorV2(head=regression_head.RegressionHead(
            label_dimension=label_dimension),
                                    hidden_units=(2, 2),
                                    feature_columns=feature_columns_v2,
                                    model_dir=self._new_ckpt_dir,
                                    optimizer=optimizer)
        # Train
        extra_steps = 10
        est_v2.train(train_input_fn, steps=extra_steps)
        self.assertIsNotNone(est_v2.latest_checkpoint())
        self.assertTrue(est_v2.latest_checkpoint().startswith(
            self._new_ckpt_dir))
        # Make sure estimator v2 restores from the converted checkpoint, and
        # continues training extra steps.
        self.assertEqual(
            num_steps + extra_steps,
            est_v2.get_variable_value(tf.compat.v1.GraphKeys.GLOBAL_STEP))
コード例 #4
0
def _dnn_estimator_classifier_fn(n_classes=3, **kwargs):
  return dnn.DNNEstimatorV2(
      head=multi_class_head.MultiClassHead(
          n_classes=n_classes),
      **kwargs)
コード例 #5
0
def _dnn_estimator_classifier_fn(n_classes=3, **kwargs):
    return dnn.DNNEstimatorV2(
        head=head_lib._multi_class_head_with_softmax_cross_entropy_loss(
            n_classes=n_classes),
        **kwargs)