我有一个二维数组,其中包含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)
考虑到我的数组是二维的,它具有如下形状-(N, 96)
(或Keras中的符号(?, 96)
)。问题是,Conv1D
仅接受一个一维矢量(据我所知),但是我们应该传递N
矢量。
我们可能要做的是通过迭代传递1D
向量(也许像tf.scan
这样的向量)。但是我不知道用Keras中的抽象层定义究竟可以做到这一点。
将2D
这样的数组传递给Conv1D
的最简单方法是什么?这样一来,每个96维行都将写入所有预测?
在Keras完全有可能吗?还是我必须创建自己的图层来进行所有迭代?
答案 0 :(得分:0)
array_new = np.expand_dims(2D_matrix_dense,2)
这将像(87398,513,1)
input = Input(shape=(513, 1),name='features')
x = Conv1D(filters=128, kernel_size=3, activation='relu',kernel_initializer="he_normal")(input)