我想使用加密的梯度聚合进行联合学习。为此,我已经从数据集中训练了一个模型,如下所示:
model.fix_precision().share(bob, alice, crypto_provider = w_aggrigator)
然后,在工人之间共享它:
test_loader = th.utils.data.DataLoader(public_data_test, shuffle=False, batch_size=batch_size)
shared_test = []
for data, target in test_loader:
shared_test.append((
data.fix_prec().share(bob, alice, crypto_provider = w_aggrigator),
target.fix_prec().share(bob, alice, crypto_provider = w_aggrigator)
))
然后,我在工作人员之间共享测试数据,如下所示:
output = th.zeros(0, dtype=th.long)
model.eval()
for data, label in test_loader:
new_labels = model(data.float()) # Error is raised on this line
ps = th.argmax(th.exp(new_labels), dim=1)
output = th.cat((output, ps))
但是,当我尝试对测试集进行预测时,会引发错误。 这是预测部分:
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
而且,这是简单的错误:
IRateLimitCounterStore
但是,当我不在工作人员之间共享模型时,它将成功进行预测。如果有人可以帮助我在这里缺少的内容,我将不胜感激。