FATE
FATE copied to clipboard
hetero-nn训练过程中,top model中的gradients一直是0
FATE版本1.8.0 heteo-nn组件,我们使用自己的数据,运行官方的hetero-nn的配置文件时,发现模型训练2个epoch就停了,跟踪发现时loss2次都没有变化,于是进一步定位问题,发现是在top model层中计算gradients时,返回的值都是0,所以导致w没有更新。 具体的代码段是:FATE/python/federatedml/nn/backend/tf_keras/nn_model.py下: ``` def _get_gradients(self, X, y, variable): from federatedml.nn.hetero_nn.backend.tf_keras import losses
y_true = placeholder(
shape=self._model.output.shape, dtype=self._model.output.dtype
)
loss_fn = getattr(losses, self._model.loss_functions[0].fn.__name__)(
y_true, self._model.output
)
gradient = gradients(loss_fn, variable)
return self._sess.run(gradient, feed_dict={self._model.input: X, y_true: y})
但是我使用官方的demo数据运行,这个函数返回的就不是0,想问下这是哪里有问题?对训练数据值有要求?
可以看一下模型或者数据的情况么
data.csv 这个是数据,麻烦看看是有啥特别不
不太看得出来 可能模型结构会导致梯度异常的情况,比如sigmoid层计算出的概率为1,计算梯度就可能导致为0. 这边的建议是,可以自己按照联邦网络的结构实现一个本地网络,然后用一样的初始化,运行下看看会不会有问题
This issue has been marked as stale because it has been open for 365 days with no activity. If this issue is still relevant or if there is new information, please feel free to update or reopen it.