如何访问序列类型的值?

How can I access value in sequence type?

client_output

中有以下属性
weights_delta = attr.ib()
client_weight = attr.ib()
model_output = attr.ib()
client_loss = attr.ib() 

之后,我通过 a = tff.federated_collect(client_output)round_model_delta = tff.federated_map(selecting_fn,a)here 中。我宣布 `

@tff.tf_computation()  # append
def selecting_fn(a):
    #TODO
    return round_model_delta

here 中。在服务端取平均值的过程中,我想通过选择一些损失值较小的客户端来对weights_delta求平均值。所以我尝试通过 a.weights_delta 访问它,但它不起作用。

tff.federated_collect returns a tff.SequenceType 放置在 tff.SERVER 中,您可以像 for example 客户端数据集一样操作,通常在方法中处理由 tff.tf_computation.

装饰

请注意,您必须在 tff.federated_computation 的范围内使用 tff.federated_collect 运算符。您可能想要做的 [*] 是使用 tff.federated_map 运算符将其传递到 tff.tf_computation。一旦进入 tff.tf_computation,您可以将其视为一个 tf.data.Dataset 对象,并且 tf.data 模块中的所有内容都可用。

[*] 我猜。对您想实现的目标进行更详细的解释会有所帮助。