def test_regression_output_tensors_roundtrip(self): value = array_ops.placeholder(dtypes.float32, 1, name='value') regression_output = export_lib.RegressionOutput(value) self.assertSequenceEqual( [value], tpu_estimator._export_output_to_tensors(regression_output)) value_new = array_ops.placeholder(dtypes.float32, 1, name='value_new') regression_output_new = ( tpu_estimator._clone_export_output_with_tensors( regression_output, [value_new])) self.assertEqual(value_new, regression_output_new.value)
def test_classification_output_tensors_roundtrip_scores_only(self): scores = array_ops.placeholder(dtypes.float32, 1, name='scores') classification_output = export_lib.ClassificationOutput(scores=scores) classification_output_tensors = ( tpu_estimator._export_output_to_tensors(classification_output)) self.assertEqual(classification_output_tensors, [scores, None]) scores_new = array_ops.placeholder(dtypes.float32, 1, name='scores_new') classification_output_new = ( tpu_estimator._clone_export_output_with_tensors( classification_output, [scores_new, None])) self.assertEqual(classification_output_new.scores, scores_new)
def test_classification_output_tensors_roundtrip_classes_only(self): classes = array_ops.placeholder(dtypes.string, 1, name='classes') classification_output = export_lib.ClassificationOutput( classes=classes) classification_output_tensors = ( tpu_estimator._export_output_to_tensors(classification_output)) self.assertEqual(classification_output_tensors, [None, classes]) classes_new = array_ops.placeholder(dtypes.string, 1, name='classes_new') classification_output_new = ( tpu_estimator._clone_export_output_with_tensors( classification_output, [None, classes_new])) self.assertEqual(classification_output_new.classes, classes_new)
def test_classification_output_tensors_roundtrip_classify_both(self): classes = array_ops.placeholder(dtypes.string, 1, name='classes') scores = array_ops.placeholder(dtypes.float32, 1, name='scores') classification_output = export_lib.ClassificationOutput( scores, classes) classification_output_tensors = ( tpu_estimator._export_output_to_tensors(classification_output)) self.assertSequenceEqual(classification_output_tensors, [scores, classes]) classes_new = array_ops.placeholder(dtypes.string, 1, name='classes_new') scores_new = array_ops.placeholder(dtypes.float32, 1, name='scores_new') classification_output_new = ( tpu_estimator._clone_export_output_with_tensors( classification_output, [scores_new, classes_new])) self.assertEqual(classification_output_new.classes, classes_new) self.assertEqual(classification_output_new.scores, scores_new)
def test_predict_output_tensors_roundtrip(self): value1 = array_ops.placeholder(dtypes.float32, 1, name='value1') value2 = array_ops.placeholder(dtypes.float32, 1, name='value2') predict_output = export_lib.PredictOutput({ 'value1': value1, 'value2': value2 }) export_output_tensors = tpu_estimator._export_output_to_tensors( predict_output) self.assertSameElements([value1, value2], export_output_tensors) self.assertLen(export_output_tensors, 2) tensors_new = [ array_ops.identity(t, name=t.name.split(':')[0] + '_new') for t in export_output_tensors ] predict_output_new = tpu_estimator._clone_export_output_with_tensors( predict_output, tensors_new) outputs = predict_output_new.outputs self.assertLen(outputs, 2) self.assertEqual(outputs['value1'].name, 'value1_new:0') self.assertEqual(outputs['value2'].name, 'value2_new:0')