【发布时间】:2020-06-26 15:34:09
【问题描述】:
如果我有一个联合值,比如 {int32}@CLIENTS,我想将其转换为 {float32}@CLIENTS,有没有一种简单的方法可以做到这一点?谢谢!
【问题讨论】:
如果我有一个联合值,比如 {int32}@CLIENTS,我想将其转换为 {float32}@CLIENTS,有没有一种简单的方法可以做到这一点?谢谢!
【问题讨论】:
张量操作通常需要发生在用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)
【讨论】:
可以使用 tf.cast() 来完成,但是使用 @tff.federated_computation()。
【讨论】: