如果我想动态添加新的节点到我的张量流层,我该怎么办?
例如,如果我想在模型训练一段时间后将隐藏节点的数量从10更改为11。另外,假设我知道我希望权重进入和退出此节点/神经元的值。
我可以创建一个全新的图表,但是有不同/更好的方法吗?
答案 0 :(得分:4)
TensorFlow有很多优点,但动态图修改不是其中之一。
如果您真的希望能够动态更改图形,我建议您使用PyTorch(http://pytorch.org/)。虽然它比TensorFlow更新,但文档并不完整。
答案 1 :(得分:3)
最好不要创建一个全新的图形,而是最好创建一个图形,该图形最初具有比您需要的更多的神经元,并通过乘以具有1和0的不可训练变量来掩盖它。然后,您可以更改此掩码变量的值,以便有效地让新神经元第一次起作用。
答案 2 :(得分:1)
我们假设输出res
时考虑到有10个隐藏层,让我们调用第10个隐藏层layer10
。所以你要做的是
res = f(layer10)
其中f
是一些在layer10
上运行并返回结果张量的函数。
预先创建layer11
作为layer10
和res2
上的某些操作,作为layer11
的输出。
现在运行你只评估将在10层使用的res
。如果要使用11层,请使用res2
。如果您知道权重,则可以将其指定为tensor.assign(val).eval()