Как обучить нейронную сеть и воспроизвести это как блоки большей сети? - PullRequest
1 голос
/ 19 марта 2019

У меня есть вход, сформированный из 7 групп, каждая из которых имеет 3 значения:

[ a0, a1, a2, b0, b1, b2, ..., g0, g1, g2]

3 значения тесно связаны между собой, и все 7 групп ведут себя одинаково, поэтому к каждой из них можно относиться одинаково.

Я хотел бы создать небольшую нейронную сеть для работы с информацией о группе (3 значения) и воспроизвести ее (как семь блоков) для обработки всех входных данных. Таким образом, все эти блоки будут иметь одинаковые веса, и каждый блок будет отвечать за одну группу. В конце выход этих блоков будет воссоединен и обработан другим NN.

Я спрашиваю об этом, потому что хочу минимизировать усилия по обучению первых слоев (ответственных за обработку входных данных). Воспользовавшись тем, что каждая из этих групп имеет одинаковое поведение, обучить только его часть.

То, о чем я прошу, похоже на ядро ​​ ConvNet . Но ядро ​​ ConvNet будет обрабатывать каждую группу из трех соседних значений, смешивая такие группы, как (a0,a1,a2),(a1,a2,b0),(a2,b0,b1), etc., и получая больший результат.

Я начинаю с tenorflow, и я не знаю, как создать эту модель. Можете ли вы помочь мне подумать, как это создать?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы правы, я думаю, что ConvNet - это путь. Чтобы избежать «смешивания» между a (n) и b (n) (в вашем примере), вы можете использовать «strides =» в качестве параметра в слое Conv. Пример:

x = Conv1D(nb_features, kernel_size=(3), strides=(3), padding='valid')(x)

Это будет иметь выход с (7 * 3) / 3 = 7 выходами. Выберите соответственно nb_features, чтобы сохранить количество информации. Например:

nb_features = 3

может быть отправной точкой.

0 голосов
/ 28 марта 2019

Как я это решил: Совместное использование переменных

Все блоки используют один и тот же набор переменных (весов и смещений).Для этого все переменные должны иметь имена.
При использовании именованных переменных при создании слоя все веса могут быть ссылками на уже существующие переменные.
Наконец, выходы блоков могут быть объединены и использованы в качестве входных данных для другого.сеть.

У этой структуры есть имя: Сиамская нейронная сеть
Я не знал этого имени, поэтому ничего о нем не нашел.

Теперь у меня есть имя, я нашел этот вопрос: Сиамская нейронная сеть в TensorFlow

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...