Можно ли встроить нейроэволюцию нейронных сетей с увеличенной топологией (NEAT) в TensorFlow? - PullRequest
0 голосов
/ 12 сентября 2018

Я создаю программу машинного обучения для анализа данных временных рядов, и использование NEAT может помочь в работе.Я начал изучать TensorFlow не так давно, но кажется, что вычислительные графы в TensorFlow обычно исправлены.Есть ли в TensorFlow инструменты, помогающие создать динамически развивающуюся нейронную сеть?Или что-то вроде Pytorch будет лучшей альтернативой?Спасибо.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2018

Один из способов создать развивающуюся тензорную сеть - использовать алгоритмы гипернеата или эс-гипернеата вместо того, чтобы запускать эволюцию в отдельных сетях видов, вместо этого развивается «геном», который фактически представляет собой cppn, кодирующий фенотип.нейронные сети.Для cppn вы можете использовать прямую сеть тензорного потока с предупреждением о наличии разных функций активации, которые можно использовать на каждом узле, это позволяет cppn evolve иметь возможность запрашивать структуру и вес нейронной сети "фенотипа".для которого вы можете использовать универсальную сеть тензорного потока (или любую другую сеть, которую вы выберете)

Я бы посмотрел в библиотеки neat-python и peas, посмотрел на сети, которые они используют, и реплицировал эти классы с сетями тензорного потока.

0 голосов
/ 03 января 2019

Он не может быть реализован в режиме статического графа TensorFlow без существенных компромиссов, потому что топология нейронных сетей в населении изменяется.Статические графики подходят для моделей, архитектура которых не изменяется во время обучения.Однако это можно сделать в TensorFlow Eager или PyTorch, поскольку они поддерживают графики динамических вычислений.

Проверьте эту реализацию в TensorFlow Eager: https://github.com/crisbodnar/TensorFlow-NEAT

0 голосов
/ 18 сентября 2018

TensorFlow поддерживает стремительное выполнение , которое может поддерживать произвольно динамические топологии сети.

...