Как правильно передать 2D массив в Conv1D? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть 2-мерный массив, который содержит N строк 96-мерных векторов:

[[n_(1 1), n_(1 2), ... , n_(1 96)]
[n_(2, 1), n_(2, 2), ... , n_(2 96)
...
[n_(N, 1), n_(N, 2), ... , n_(N 96)]]

Я хочу передать каждый вектор строки массива выше в Conv1DКлассификатор определен ниже:

from keras.initializers import Constant, RandomNormal
from keras.layers import Conv1D
from keras.activations import softmax

classifier_conv = Conv1D(filters=4,
                         kernel_size=1,
                         activation=softmax,
                         padding='same',
                         kernel_initializer=RandomNormal(stddev=0.01),
                         bias_initializer=Constant(value=0))(multi_array)

Учитывая, что мой массив 2-мерен, он имеет форму, подобную этой - (N, 96) (или в Керасе, символическая (?, 96)).Проблема в том, что Conv1D принимает только один одномерный вектор (насколько я знаю), но мы должны передать N векторов.

Что мы могли бы сделать, это передать 1D векторы с итерацией (возможно, что-то вроде tf.scan?).Но я не знаю, как именно это можно сделать с помощью абстрактных определений слоев в Keras.


Какой самый простой способ передать 2D такой массив в Conv1D?Так что он берет каждую 96-мерную строку и записывает все предсказания?

Возможно ли это вообще в Керасе?или я должен создать свой собственный слой, который выполняет все итерации?

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