有没有一种方法可以转换联邦值?

时间:2020-06-26 15:34:09

标签: tensorflow-federated

如果我有一个联合值,请说我想强制转换为{int32}@CLIENTS的{​​{1}},有一种简单的方法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

通常需要在用tff.tf_computation装饰的函数内部进行张量操纵。由于提到的类型具有放置位置(@CLIENTS,因此这很可能位于装饰tff.federated_computation中,因此,必须使用tff.federated_map调用强制转换方法。

类似这样的东西:

@tff.tf_computation
def cast_to_float(x):
  return tf.cast(x, tf.float32)

@tff.federated_computation(tff.FederatedType(int32, tff.CLIENTS))
def my_func(a):
  a_float = tff.federated_map(cast_to_float, a)
  return a_float

print(my_func.type_signature)

>>> ({int32}@CLIENTS -> {float32}@CLIENTS)

答案 1 :(得分:-1)

可以使用tf.cast()完成此操作,但是可以使用@ tff.federated_computation()。