如何访问序列类型的值?
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
模块中的所有内容都可用。
[*] 我猜。对您想实现的目标进行更详细的解释会有所帮助。
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
模块中的所有内容都可用。
[*] 我猜。对您想实现的目标进行更详细的解释会有所帮助。