如何在tensorflow中动态添加新节点/神经元

时间:2017-03-29 11:40:22

标签: python machine-learning tensorflow neural-network artificial-intelligence

如果我想动态添加新的节点到我的张量流层,我该怎么办?

例如,如果我想在模型训练一段时间后将隐藏节点的数量从10更改为11。另外,假设我知道我希望权重进入和退出此节点/神经元的值。

我可以创建一个全新的图表,但是有不同/更好的方法吗?

3 个答案:

答案 0 :(得分:4)

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

如果您真的希望能够动态更改图形,我建议您使用PyTorch(http://pytorch.org/)。虽然它比TensorFlow更新,但文档并不完整。

答案 1 :(得分:3)

最好不要创建一个全新的图形,而是最好创建一个图形,该图形最初具有比您需要的更多的神经元,并通过乘以具有1和0的不可训练变量来掩盖它。然后,您可以更改此掩码变量的值,以便有效地让新神经元第一次起作用。

答案 2 :(得分:1)

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

res = f(layer10)

其中f是一些在layer10上运行并返回结果张量的函数。

预先创建layer11作为layer10res2上的某些操作,作为layer11的输出。

现在运行你只评估将在10层使用的res。如果要使用11层,请使用res2。如果您知道权重,则可以将其指定为tensor.assign(val).eval()