【问题标题】:Can a neural network predict a timeseries based on other timeseries?神经网络可以根据其他时间序列预测时间序列吗?
【发布时间】:2023-04-02 22:59:01
【问题描述】:

我想根据两个不同的时间序列 X2 和 X3 预测一个有 n 个点的时间序列 X1,每个时间序列也有 n 个点。这些时间序列相互作用,所以我希望使用与组合图像类似的方法来生成另一个图像。

到目前为止,我已经成功实现了一个自动编码器来学习和返回所有时间序列(X1、X2、X3)。当我尝试建立一个神经网络以仅使用 X2 和 X3 来预测 X1(3000 个单位)时,模型无法编译并且出现错误:

Error when checking target: expected sequential_9 to have 2 dimensions, but got array with shape (61, 3000, 1, 1)

在不同的组合中,它会在 flatten_xdense_x 处中断。 如果我的输出只有一个单位而不是 3000,它就可以工作。

我尝试的网络有以下几层:

Layer (type)                 Output Shape              Param #   
=================================================================
input_8 (InputLayer)         (None, 3000, 2, 1)        0         
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 3000, 2, 32)       96        
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 1500, 2, 32)       0         
_________________________________________________________________
flatten_7 (Flatten)          (None, 96000)             0         
_________________________________________________________________
dense_6 (Dense)              (None, 3000, 1, 32)                

这是我用来创建网络的代码:

network = Sequential((
    Conv2D(filters=32, kernel_size=(1,2), activation='relu', input_shape=(x, y, inChannel)),
    MaxPooling2D(pool_size = (2, 1)),
    Flatten(),
    Dense(3000, activation='relu'),
))
network.compile(loss='mean_squared_error', optimizer = RMSprop())

输入的形状为 (61, 3000, 2, 1)。

我应该在某处指定预期的输入/输出,而我不这样做吗?在途中进行一些数据转换?也许使用不同的架构?

感谢所有建议!

【问题讨论】:

    标签: keras neural-network time-series conv-neural-network


    【解决方案1】:

    您编写的网络没有您想要的架构

    如果你打印出来

    network.summary()
    

    你得到

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    conv2d_6 (Conv2D)            (None, 3000, 1, 32)       96        
    _________________________________________________________________
    max_pooling2d_6 (MaxPooling2 (None, 1500, 1, 32)       0         
    _________________________________________________________________
    flatten_6 (Flatten)          (None, 48000)             0         
    _________________________________________________________________
    dense_6 (Dense)              (None, 3000)              144003000 
    =================================================================
    Total params: 144,003,096
    Trainable params: 144,003,096
    Non-trainable params: 0
    

    因此,您必须更改架构以获得所需的输出形状。

    【讨论】:

      猜你喜欢
      • 2013-02-22
      • 2014-07-02
      • 1970-01-01
      • 2011-05-12
      • 2018-01-01
      • 2014-08-27
      • 2020-09-15
      • 2013-01-15
      • 1970-01-01
      相关资源
      最近更新 更多