增强拓扑(NEAT)神经网络的神经进化可以在TensorFlow中构建吗?



我正在制作一个用于时间序列数据分析的机器学习程序,使用 NEAT 可以帮助这项工作。不久前我开始学习TensorFlow,但似乎TensorFlow中的计算图通常是固定的。TensorFlow 中是否有工具可以帮助构建动态演进的神经网络?或者像Pytorch这样的东西会是更好的选择?谢谢。

制作进化的张量流网络的一种方法是使用超neat或es-hyperneat算法,而不是在物种中的单个网络上运行进化,而是进化出一个"基因组",实际上是编码表型神经网络的cppn。对于 cppn,您可以使用前馈张量流网络,但需要注意的是,每个节点都可以使用不同的激活函数,这让 cppn 能够查询"表型"神经网络的结构和权重,您可以使用通用张量流网络(或您选择的任何网络(

我会研究 neat python 和 peas 库,看看他们使用的网络,并使用 tensorflow 网络复制这些类。

它不能在没有重大权衡的情况下在 TensorFlow 的静态图模式下实现,因为群体中神经网络的拓扑结构会发生变化。静态图适用于在训练期间体系结构不会更改的模型。但是,它可以在TensorFlow Eager 或 PyTorch 中完成,因为它们支持动态计算图。

在 TensorFlow Eager: https://github.com/crisbodnar/TensorFlow-NEAT 中检查此实现

TensorFlow支持预先执行,可以支持任意动态的网络拓扑。

最新更新