多时间序列上的Keras Conv1D:一次一个

多时间序列上的Keras Conv1D:一次一个,keras,Keras,我有一个numpy数组,其形状为(观察次数、时间步数、特征数)。这相当于59个特征(即时间序列),每个特征的长度为24(上述时间步数)。这是RNN输入的标准设置 我想做的是将其输入到一个模型中,其中第一步是对每个系列分别进行1D卷积,然后将59个输出连接到下一层(密集层或LSTM,然后是密集层) 如果我循环遍历特征的数量并对每个序列应用卷积,那么输入X应该如何构造 例如,假设我的数据如下: var=np.array([[[1., 3., 5., 7.], [2., 4., 6.,

我有一个numpy数组,其形状为(观察次数、时间步数、特征数)。这相当于59个特征(即时间序列),每个特征的长度为24(上述时间步数)。这是RNN输入的标准设置

我想做的是将其输入到一个模型中,其中第一步是对每个系列分别进行1D卷积,然后将59个输出连接到下一层(密集层或LSTM,然后是密集层)

如果我循环遍历特征的数量并对每个序列应用卷积,那么输入X应该如何构造

例如,假设我的数据如下:

var=np.array([[[1., 3., 5., 7.],
        [2., 4., 6., 8.]],

       [[9., 11., 13., 15.],
        [10., 12., 14., 16.]],

       [[17., 19., 21., 23.],
        [18., 20., 22., 24.]]])
其中,第一次观测时间序列1为[1,2],第二次时间序列为[3,4]……且第一次观测时间序列第四次时间序列为[7,8]

nb_filters=(8,4)
filter_length=(5,5)
dense=(16,8)


    conv_layers=[]
    input=Input(shape=(None,no_timesteps,no_features))

    for i in range(no_features):
        series=Lambda(lambda x: x[:, i])(input)
        print(series.shape)
        conv_layer=Conv1D(nb_filters[0], kernel_size=filter_length[0], padding='valid',activation='relu')(series)
        conv_layer = MaxPooling1D()(conv_layer)
        conv_layer=Conv1D(nb_filters[1], kernel_size=filter_length[1], padding='valid',activation='relu')(conv_layer)
        conv_layer = MaxPooling1D()(conv_layer)
        conv_layers.append(conv_layer)
    merge_layer=Concatenate(axis=1)(conv_layers)
    merge_layer= Flatten()(merge_layer)
    output=Dense(dense[0], activation='sigmoid')(merge_layer)

    nn=Model(inputs=inputs,outputs=output)
    nn.compile(optimizer=RMSprop(), loss='binary_crossentropy')
    nn.summary()
    nn.fit(X,y, epochs=5)
首先,由于print语句给出了一个(?,24,59)的形状,这并不是我实际在lambda中进行切片,所以这并不像预期的那样有效。我希望每个片段都是一个特定的时间序列(1,24),其中24是每个序列的长度。我们的想法是让一维卷积在这个单一时间序列上运行(对所有59个序列重复),并将它们连接在一起。

您必须使用:

input=input(形状=(无、无时间步、无功能))

input=input(形状=(样本数、无时间步、无功能))

输入层是张量,其形状必须与训练数据相同。

必须使用:

input=input(形状=(无、无时间步、无功能))

input=input(形状=(样本数、无时间步、无功能))


输入层是一个张量,其形状必须与训练数据相同。

输入形状必须仅包含时间步长和数值特征。 因此,不是:

input=Input(shape=(None, no_timesteps,no_features))
尝试:


输入形状必须仅包含时间步长和num_特征。 因此,不是:

input=Input(shape=(None, no_timesteps,no_features))
尝试:


即使加上这一点,仍然存在一些问题。我更新了这个问题以更好地反映。我想我在这篇文章中也有同样的问题:你能解决它吗?即使在添加了这个问题之后,仍然存在问题。我更新了这个问题以便更好地反映。我想我在这篇文章中也有同样的问题:你能解决它吗?