如何在张量流中动态添加新节点/神经元
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
作为对 layer10
和 res2
的一些操作作为 layer11
.
的输出
现在 运行 您只需评估 res
即可在 10 层上使用。当你想使用 11 层时使用 res2
。如果你知道权重,那么你可以像 tensor.assign(val).eval()
一样分配它
如果我想动态添加新节点到我的 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
作为对 layer10
和 res2
的一些操作作为 layer11
.
现在 运行 您只需评估 res
即可在 10 层上使用。当你想使用 11 层时使用 res2
。如果你知道权重,那么你可以像 tensor.assign(val).eval()