首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时间序列预测中不同大小输入的处理

时间序列预测中不同大小输入的处理
EN

Data Science用户
提问于 2022-04-04 03:31:04
回答 1查看 333关注 0票数 0

我正在处理一项任务,我需要在多变量时间序列中预测目标变量的第n个值。但在本例中,我们有两个变量:-var1:是表示系统输出的目标变量。-var2:这个时间序列表示一个二进制控制信号(开/关)。

因此,var1根据其先前的值和控制信号(var2)而变化。

我的问题是,给定日期n的输出取决于var 2的最后n值和var 1的最后n值。也就是说,我的网络输入有不同的值(n和n-1)。

在这个场景中,我不确定如何建模我的网络的输入。

我试图使用一个LSTM层作为我的网络的输入,具有二维(var1和var2)。但是,正如我所说,每个“样本”都有n个var2值和n-1个var1值。在这种情况下不可能创建2D数组。

有什么想法吗?

EN

回答 1

Data Science用户

回答已采纳

发布于 2022-04-04 09:06:21

您可以创建一种具有两个不同输入的编解码网络。

代码语言:javascript
运行
复制
latent_dim = 16

# First branch of the net is an lstm which finds an embedding for the var1
var_1_inputs = tf.keras.Input(shape=(window_len_1, n_1_features), name='var_1_inputs')
# Encoding var_1
encoder = tf.keras.layers.LSTM(latent_dim, return_state=True, name = 'Encoder')
encoder_outputs, state_h, state_c = encoder(var_1_inputs) # Apply the encoder object to var_1_inputs.

var_2_inputs = tf.keras.Input(shape=(window_len_2, n_2_features), name='var_2_inputs')
# Combining future inputs with recurrent branch output
decoder_lstm = tf.keras.layers.LSTM(latent_dim, return_sequences=True, name = 'Decoder')
x = decoder_lstm(var_2_inputs, 
                               initial_state=[state_h, state_c])

x = tf.keras.layers.Dense(16, activation='relu')(x)
x = tf.keras.layers.Dense(16, activation='relu')(x)
output = tf.keras.layers.Dense(1, activation='relu')(x)

model = tf.keras.models.Model(inputs=[var_1_inputs,var_2_inputs], outputs=output)

optimizer = tf.keras.optimizers.Adam()
loss = tf.keras.losses.Huber()
model.compile(loss=loss, optimizer=optimizer, metrics=["mae"])

model.summary()

你在这里,当然,我插入了层的随机数,潜在维度,等等。

您还可以使用var_1和var_2输入不同的特性,这些特性必须作为数组传递。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/109645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档