Machine learning 动态改变神经网络结构

Machine learning 动态改变神经网络结构,machine-learning,tensorflow,neural-network,Machine Learning,Tensorflow,Neural Network,我正在尝试实现一个整洁的算法,它涉及到动态改变神经网络结构,比如添加或删除节点和连接。我以前在监督学习方面的工作中一直在使用Tensorflow。但一旦在Tensorflow中定义了网络,它就无法更改。是否有其他框架提供此功能? 谢谢。除非它是专门为NEAT设计的框架,不,不是真的。符号执行的本质必然意味着有一个“创建网络”步骤,然后是一个“运行/训练网络”步骤。不过,根据您更改网络拓扑的频率,Tensorflow肯定仍然可行:这意味着,每隔一段时间,就要保存所有参数,并制作一个新模型——但这可

我正在尝试实现一个整洁的算法,它涉及到动态改变神经网络结构,比如添加或删除节点和连接。我以前在监督学习方面的工作中一直在使用Tensorflow。但一旦在Tensorflow中定义了网络,它就无法更改。是否有其他框架提供此功能?
谢谢。

除非它是专门为NEAT设计的框架,不,不是真的。符号执行的本质必然意味着有一个“创建网络”步骤,然后是一个“运行/训练网络”步骤。不过,根据您更改网络拓扑的频率,Tensorflow肯定仍然可行:这意味着,每隔一段时间,就要保存所有参数,并制作一个新模型——但这可能并不可怕,取决于您的参数

如果你不喜欢这样,你可以用掩蔽的方法手动地把一些东西拼凑起来。也就是说,一些神经元被“屏蔽”并被移除,或者一些连接被“屏蔽”。要做到这一点,可以为所有参数设置一个0-1值的掩码,在应用之前将其预乘到参数中。保持“允许的”连接稀疏,但尽可能将所有其他连接紧密地连接在一起。在某种程度上,它会使您的速度变慢,因为会有一些额外的计算,但是
tf.cond
调用可能只通过有条件地执行就可以节省您的大部分时间。这不能让您完全自由地进行拓扑演化,但可以非常灵活