Пример #1
0
 def test_get_metadata_multiple_inputs(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_image_metadata(
       self.linear_layer, visualization={'type': 'Pixels'})
   builder.add_numeric_metadata(self.x, name='my_input')
   builder.add_output_metadata(self.prediction)
   md_dict = builder.get_metadata()
   expected_md = {
       'framework': 'Tensorflow',
       'inputs': {
           'Add': {
               'visualization': {
                   'type': 'Pixels'
               },
               'input_tensor_name': 'Add:0',
               'encoding': 'identity',
               'modality': 'image'
           },
           'my_input': {
               'input_tensor_name': 'inp:0',
               'encoding': 'identity',
               'modality': 'numeric'
           }
       },
       'outputs': {
           'Relu': {
               'output_tensor_name': 'Relu:0'
           }
       },
       'tags': ['explainable_ai_sdk']
   }
   self.assertDictEqual(expected_md, md_dict)
Пример #2
0
  def test_add_output_metadata(self):
    builder = graph_metadata_builder.GraphMetadataBuilder()
    builder.add_output_metadata(self.prediction, 'my_output')
    md_dict = builder.get_metadata()
    expected_out_md = {'my_output': {'output_tensor_name': 'Relu:0'}}

    self.assertDictEqual(expected_out_md, md_dict['outputs'])
Пример #3
0
 def test_add_numeric_metadata_no_name(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_numeric_metadata(self.x)
   md_dict = builder.get_metadata()
   expected_input_md = {
       'inp': {
           'input_tensor_name': 'inp:0',
           'encoding': 'identity',
           'modality': 'numeric',
       }
   }
   self.assertDictEqual(expected_input_md, md_dict['inputs'])
 def test_add_image_metadata_domain(self, domain, domain_dict):
     builder = graph_metadata_builder.GraphMetadataBuilder()
     builder.add_image_metadata(self.x, domain=domain)
     md_dict = builder.get_metadata()
     expected_input_md = {
         'inp': {
             'input_tensor_name': 'inp:0',
             'encoding': 'identity',
             'modality': 'image'
         }
     }
     expected_input_md['inp'].update(domain_dict)
     self.assertDictEqual(expected_input_md, md_dict['inputs'])
Пример #5
0
 def test_add_numeric_metadata_index_feature_mapping(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_numeric_metadata(
       self.x, name='mapped', index_feature_mapping=['a', 'b'])
   md_dict = builder.get_metadata()
   expected_input_md = {
       'mapped': {
           'input_tensor_name': 'inp:0',
           'encoding': 'bag_of_features',
           'modality': 'numeric',
           'index_feature_mapping': ['a', 'b']
       }
   }
   self.assertDictEqual(expected_input_md, md_dict['inputs'])
Пример #6
0
 def test_add_text_metadata(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_text_metadata(
       self.x, encoded_tensor=self.linear_layer, encoding='combined_embedding')
   md_dict = builder.get_metadata()
   expected_input_md = {
       'inp': {
           'input_tensor_name': 'inp:0',
           'encoding': 'combined_embedding',
           'encoded_tensor_name': 'Add:0',
           'modality': 'text'
       }
   }
   self.assertDictEqual(expected_input_md, md_dict['inputs'])
Пример #7
0
 def test_add_image_metadata(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_image_metadata(self.x, visualization={'type': 'Pixels'})
   md_dict = builder.get_metadata()
   expected_input_md = {
       'inp': {
           'visualization': {
               'type': 'Pixels'
           },
           'input_tensor_name': 'inp:0',
           'encoding': 'identity',
           'modality': 'image'
       }
   }
   self.assertDictEqual(expected_input_md, md_dict['inputs'])
    def test_save_model_with_metadata_kwargs(self):
        builder = graph_metadata_builder.GraphMetadataBuilder(
            session=self.sess, tags=['testing'], strip_default_attrs=False)
        builder.add_image_metadata(self.linear_layer,
                                   visualization={'type': 'Pixels'})
        builder.add_numeric_metadata(self.x, name='my_input')
        builder.add_output_metadata(self.prediction)
        model_path = os.path.join(tf.test.get_temp_dir(), 'model_kwargs')
        builder.save_model_with_metadata(model_path)

        metadata_file_path = os.path.join(model_path,
                                          'explanation_metadata.json')
        saved_model_file_path = os.path.join(model_path, 'saved_model.pb')
        self.assertTrue(os.path.isfile(metadata_file_path))
        self.assertTrue(os.path.isfile(saved_model_file_path))
Пример #9
0
  def test_save_model_with_metadata(self):
    builder = graph_metadata_builder.GraphMetadataBuilder(session=self.sess)
    builder.add_image_metadata(
        self.linear_layer, visualization={'type': 'Pixels'})
    builder.add_numeric_metadata(self.x, name='my_input')
    builder.add_output_metadata(self.prediction)
    model_path = os.path.join(tf.test.get_temp_dir(), 'multi_modal')
    builder.save_model_with_metadata(model_path)

    metadata_file_path = os.path.join(model_path, 'explanation_metadata.json')
    saved_model_file_path = os.path.join(model_path, 'saved_model.pb')
    self.assertTrue(os.path.isfile(metadata_file_path))
    with tf.io.gfile.GFile(metadata_file_path, 'r') as f:
      written_md = json.load(f)
    self.assertDictEqual(builder.get_metadata(), written_md)
    self.assertTrue(os.path.isfile(saved_model_file_path))
Пример #10
0
 def test_add_numeric_metadata_same_tensor(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_numeric_metadata(self.x, name='same')
   with self.assertRaisesRegex(ValueError, 'Input tensor .* exists'):
     builder.add_numeric_metadata(name='different', input_tensor=self.x)
Пример #11
0
 def test_add_numeric_metadata_same_name(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_numeric_metadata(self.x, name='same')
   with self.assertRaisesRegex(ValueError, 'Input name .* exists'):
     builder.add_numeric_metadata(name='same', input_tensor=self.linear_layer)
Пример #12
0
 def test_add_output_metadata_multiple(self):
   builder = graph_metadata_builder.GraphMetadataBuilder()
   builder.add_output_metadata(self.prediction, 'my_output1')
   with self.assertRaisesRegex(ValueError, 'Only one output can be added'):
     builder.add_output_metadata(self.x, 'my_output2')