如何在张量流中动态添加新节点/神经元

How to add new nodes / neurons dynamically in tensorflow

如果我想动态添加新节点到我的 tensorflow 层中,我该怎么做?

例如,如果我想在模型训练一段时间后将隐藏节点的数量从 10 更改为 11。另外,假设我知道我希望进出这个 node/neuron 的权重是什么值。

我可以创建一个全新的图表,但是有 different/better 方法吗?

与其创建一个全新的图,不如创建一个最初具有比您需要的更多神经元的图,然后通过乘以一个具有 1 和 0 的不可训练变量来掩盖它。然后,您可以更改此掩码变量的值,以允许有效的新神经元首次起作用。

TensorFlow 有很多优点,但动态图形修改不是其中之一。

如果您真的希望能够即时更改图表,我推荐您使用 PyTorch (http://pytorch.org/)。虽然它比 TensorFlow 更新得多,但文档并不完整。

让我们假设 res 是输出,考虑到有 10 个隐藏层,我们称第 10 个隐藏层为 layer10。所以你要做的是

res = f(layer10)

其中 f 是对 layer10 和 returns 结果张量进行运算的函数。

预先创建 layer11 作为对 layer10res2 的一些操作作为 layer11.

的输出

现在 运行 您只需评估 res 即可在 10 层上使用。当你想使用 11 层时使用 res2。如果你知道权重,那么你可以像 tensor.assign(val).eval()

一样分配它