Ejemplo n.º 1
0
  def test_raises_type_error(self, executor, value_and_type_signature):
    value, type_signature = value_and_type_signature
    value = self.run_sync(executor.create_value(value, type_signature))
    arg = self.run_sync(executor.create_struct([value, value]))

    with self.assertRaises(TypeError):
      self.run_sync(
          executor_utils.compute_intrinsic_federated_weighted_mean(
              executor, arg))
Ejemplo n.º 2
0
  def test_raises_type_error_with_singleton_tuple(
      self,
      executor,
      num_clients,
  ):
    value, type_signature = executor_test_utils.create_whimsy_value_at_clients(
        num_clients)
    value = self.run_sync(executor.create_value(value, type_signature))
    arg = self.run_sync(executor.create_struct([value]))

    with self.assertRaises(TypeError):
      self.run_sync(
          executor_utils.compute_intrinsic_federated_weighted_mean(
              executor, arg))
Ejemplo n.º 3
0
  def test_computes_weighted_mean(
      self,
      executor,
      num_clients,
  ):
    value, type_signature = executor_test_utils.create_whimsy_value_at_clients(
        num_clients)

    # Weighted mean computed in Python
    expected_result = sum([x**2 for x in value]) / sum(value)

    value = self.run_sync(executor.create_value(value, type_signature))
    arg = self.run_sync(executor.create_struct([value, value]))
    result = self.run_sync(
        executor_utils.compute_intrinsic_federated_weighted_mean(executor, arg))

    self.assertIsInstance(result, executor_value_base.ExecutorValue)
    expected_type = computation_types.at_server(type_signature.member)
    self.assertEqual(result.type_signature.compact_representation(),
                     expected_type.compact_representation())
    actual_result = self.run_sync(result.compute())
    self.assertEqual(actual_result, expected_result)