Ejemplo n.º 1
0
    def test_value_search_checks_bad_solutions(self):
        inputs = {'tensor': [10, 20, 30], 'index': -2}
        output = 20
        constants = [1, 20]

        results = value_search.run_value_search_from_example(
            inputs=inputs,
            output=output,
            constants=constants,
            settings=settings_module.from_dict(
                {'require_all_inputs_used': True}))
        self.assertLen(results.solutions, 1)
        self.assertEqual(results.solutions[0].expression, 'tensor[index]')

        results = value_search.run_value_search_from_example(
            inputs=inputs,
            output=output,
            constants=constants,
            settings=settings_module.from_dict({
                'require_all_inputs_used': False,
                'require_one_input_used': True
            }))
        self.assertLen(results.solutions, 1)
        self.assertEqual(results.solutions[0].expression, 'tensor[1]')

        results = value_search.run_value_search_from_example(
            inputs=inputs,
            output=output,
            constants=constants,
            settings=settings_module.from_dict({
                'require_all_inputs_used': False,
                'require_one_input_used': False
            }))
        self.assertLen(results.solutions, 1)
        self.assertEqual(results.solutions[0].expression, 'tf.constant(20)')
Ejemplo n.º 2
0
def run_value_search_from_colab(
    inputs: Dict[Text, Any],
    output: Any,
    constants: Optional[List[Any]] = None,
    description: Optional[Text] = None,
    settings: Optional[settings_module.Settings] = None
) -> value_search.ValueSearchResults:
  """Value search endpoint for the Colab interface.

  Args:
    inputs: A dict mapping input variable names to input tensors.
    output: The corresponding desired output.
    constants: An optional list of scalar constants.
    description: An optional natural language description of the task.
    settings: A Settings object containing settings for the search.

  Returns:
    A ValueSearchResults namedtuple.
  """
  if not WARMED_UP:
    warm_up()

  return value_search.run_value_search_from_example(
      inputs=inputs,
      output=output,
      settings=settings if settings is not None else DEFAULT_SETTINGS,
      constants=constants,
      description=description,
      source='From TF-Coder Colab',
      description_handler=DESCRIPTION_HANDLER,
      tensor_model=TENSOR_MODEL,
      tensor_config=TENSOR_CONFIG)
Ejemplo n.º 3
0
 def test_run_value_search_from_example_with_constants(self):
     results = value_search.run_value_search_from_example(
         inputs=[
             [10, 20, 30],
         ],
         output=[54, 64, 74],
         settings=self.settings,
         constants=[44])
     self.assertLen(results.solutions, 1)
     self.assertEqual(results.solutions[0].expression,
                      'tf.add(in1, tf.constant(44))')
Ejemplo n.º 4
0
 def test_run_value_search_from_example(self):
     results = value_search.run_value_search_from_example(
         inputs=[[1, 2, 3], [10, 20, 30]],
         output=[11, 22, 33],
         settings=settings_module.from_dict({
             'timeout': 5,
             'max_solutions': 2
         }))
     self.assertLen(results.solutions, 2)
     self.assertEqual(results.solutions[0].expression, 'tf.add(in1, in2)')
     self.assertEqual(results.solutions[1].expression, 'tf.add(in2, in1)')
     # Linter suggests self.assertLess() but it's wrong.
     self.assertTrue(0.0 < results.total_time < 5.0)  # pylint: disable=g-generic-assert