使用Keras进行特征卷积



我正在尝试 Keras,但我被困在下面。我有一个包含特征数组的列表,我需要用 Keras 来卷积它。特征数组列表由以下代码生成。

features= []
for i in range(32):       # Contains 32 feature arrays
    x = np.random.randint(low=-1, high=1, size=16)  #Each feature arraysize = 16 
    features.append(x)

我尝试的卷积步骤如下,

conv = Sequential()
conv.add(Convolution1D(filters=32, kernel_size=3, input_shape=(16,1),
                activation='elu', use_bias=True))
conv.add(Dense(units=1))
conv.compile(optimizer='adam', loss='mse')
#conv.predict(features) is the way I tried but failed.

我需要获取输入特征列表的卷积列表。我该怎么做?

正如 Keras 顺序模型文档中所述,将维度传递给模型时,应包括批大小。直观地说,您假设 Keras 获取您的全部数据并将其分批馈送,但这必须使用 None 关键字明确说明,该关键字在输入中的实例数不恒定时使用:

conv.add(Convolution1D(filters=32, kernel_size=3, activation='elu', use_bias=True, input_shape=(None,16))) .

接下来,当您尝试在一个批次中馈送整个数据集时,您的数据集维度应包括批大小作为第一个维度(1,32,16) .这可以通过以下方式实现:x = np.reshape(features, newshape=(1,32,16)) .

我用这些更改重新创建了您的代码,它可以工作。