У меня есть 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-мерную строку и записывает все предсказания?
Возможно ли это вообще в Керасе?или я должен создать свой собственный слой, который выполняет все итерации?