微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用WNN

如何解决使用WNN

我正在尝试实现小波神经网络来预测时间序列的未来值。 具体来说,我正在尝试实施以下2篇论文:

我的信号合理地是周期性的。

  • 由于先前的结果较差,我通过使用3号中值滤波器进行卷积来对其进行预处理
  • 然后我使用python的pywt.swt将其分解为固定的小波分量
  • 然后,我将所有这些小波传递到张量流中的ANN:如果我的信号是10000长,并且我有5个小波分量,则我的神经网络输入是形状为[batch,10000 / batch,5]的张量。是[batch,10000 / batch,1]; 1是为接下来的10000个步骤中的每个步骤预测的1d值。

这是我的问题:无论我使用什么神经网络,预测都离真实值的样子不远。在下图中,蓝线是我的真实值(需要预测的值),橙色是模型的实际输出

我首先尝试使用完全连接的密集网络简化:4层深,各层大小不同:

   def DenseNN():
   activation='relu'
   return tf.keras.Sequential([
          tf.keras.layers.Batchnormalization(),tf.keras.layers.Dense(32,activation=activation,kernel_initializer='GlorotUniform',use_bias=True),tf.keras.layers.Dropout(0.1),tf.keras.layers.Dense(16,tf.keras.layers.Batchnormalization(),tf.keras.layers.Dense(8,tf.keras.layers.Dense(1,use_bias=True)
          ])

   model.compile(loss=tf.losses.MeanSquaredError(),optimizer=tf.optimizers.Nadam(learning_rate=0.001),metrics=[tf.metrics.RootMeanSquaredError()])

结果不是很好。它停止学习并在5个时期后开始过度拟合 best fit I could get with a Dense Network having tweeked number of layers,their size and learning parameters (learning rate,optimizer and loss)

我认为没什么大不了的,也许稠密的复合物不足以了解我的信号的微妙之处,在中值滤波器之后,它看起来一点也不可怕:因此我尝试了其他方法:LSTM甚至编写了resnet来尝试并获得更好的契合度:

def LSTM():
   return tf.keras.Sequential([
          tf.keras.layers.LSTM(units=8,activation='tanh',recurrent_activation='sigmoid',use_bias=True,kernel_initializer='glorot_uniform',return_sequences=True,dropout=0.2),tf.keras.layers.Dense(units=32,activation='linear',kernel_initializer='glorot_uniform'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(units=1,kernel_initializer='glorot_uniform')
          ])

尽管如此:尽管多次尝试了内核初始化程序,激活(selu,relu,elu,tanh,Sigmoid等),但拟合还是很糟糕的。 LSTM output

和我的resnet(每个块是3 Conv1D,主路径与快捷方式合并):

X_input = Input(input_shape)

#stage 1
X = block_unit(X_input,filter=input_shape[-1],kernel=5,padding='same')
X = MaxPool1D()(X)

#stage 2
filts = [8,4,2]
ksize = 3
X = conv_block(X,filts,ksize)
X = id_block(X,ksize)

X = conv_block(X,ksize)

X = AveragePooling1D(2)(X)
X = Flatten()(X)
X = Dense(nb_future_predictions,use_bias = True,kernel_initializer = glorot_uniform(seed=0))(X)
X = Reshape([nb_future_predictions,1]) (X)

反正the result is even worst

我的问题是,为什么所有这些模型(从最简单的模型到更复杂的模型)都在视觉上绝对可预测的信号上挣扎如此之大。 我对两篇论文的时间序列的启发都来自看起来比较不定期(如果不是完全随机的混乱)的周期性。但是他们的模型非常适合。

请问有人可以有一个外在的外观,并给我一些关于我可能会想念的人工神经网络机制的指点,这可以解释为什么我的预测如此差劲吗? 不幸的是,由于法律原因,我无法共享我的数据。 预先感谢您的宝贵意见

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。