乐趣区

关于机器学习:FATE联邦学习FATE-自定义Trainer

背景

本人定义了模型后,须要自行定义训练形式。

这里文档给了办法,然而大部分还是须要本人看源码摸索。

  • https://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Homo-NN-Customize-Trainer/
  • https://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Homo-NN-Trainer-Interfaces/
    文档写的也有疏漏哈哈,最初我还是本人找到了,就是下面 2 个链接:

    我的做法

federatedml.nn.homo.trainer 外面退出本人的 trainer。
我本人间接复制了原先的 FedAvgTrainer 的代码,而后改掉了 train 的代码成本人代码了。

有几个留神的点

  • Fateboard 中打印 loss:找callback_loss,参照 FedAvgTrainer 的代码加上就行,loss 曾经在 base 类里实现了,你也参考 call back loss 的代码能够间接新写个指标。

    我碰到的坑是:必须 float+cpu() 一下、或者用 item() 取值才行,即使是我的 torch 版本是反对 cuda 的,不然报错。我的写法是 self.callback(float(my_loss.cpu().detach()), idx),然而我打印了 FedAvg 的 loss 他自身是 numpy 类型的,然而我间接 numpy() 就不行。不晓得怎么回事。

    self.callback(my_loss.cpu().detach().numpy(), idx),不报错,然而 Fateboard 加载不进去
    self.callback(my_loss, idx),报错,说 cuda available 是 False,我真醉了

  • FedAvgTrainerfederation process 是与是否收敛 convergence 相干的,退出那段代码能有疾速完结训练的成果(达到收敛规范可立刻完结,跟 early stopping 差不多)。
退出移动版