gpt4 book ai didi

tensorflow - 使用 Keras Functional API 将时间序列与 RNN/LSTM 中的时不变数据相结合

转载 作者:行者123 更新时间:2023-12-03 17:02:39 27 4
gpt4 key购买 nike

更新:如 rvinas指出,我忘了将输入辅助添加为第二个 inputModel .现在修复了,它的工作原理。所以 ConditionalRNN 可以很容易地用来做我想做的事。

我想将时间序列与扩展 LSTM 单元中的非时间序列特征一起处理(该要求也讨论了 here)。 ConditionalRNN (cond-rnn)对于 Python 中的 Tensorflow 似乎允许这样做。

可以在 Keras Functional API 中使用吗(无需急切执行)?
也就是说,有没有人知道如何解决我下面失败的方法,或者有一个不同的例子,其中 ConditionalRNN(或替代方案)用于在 LSTM 样式的单元格或任何等效单元中轻松组合 TS 和非 TS 数据?

我在 Pilippe Remy's ConditionalRNN github page 上看到了 Eager execution-bare tf 示例,但我没有设法将它扩展到 Keras Functional API 中易于安装的版本。

我的代码如下所示;如果我使用标准 LSTM 单元而不是 ConditionalRNN(并相应地调整模型“x”输入),则它会起作用。使用 ConditionalRNN,我没有让它执行;我收到了 must feed a value for placeholder tensor 'in_aux'错误(参见下文),或者当我更改代码时出现一些不同类型的输入大小投诉,尽管我尝试注意数据维度的兼容性。

(在 Ubuntu 16.04 上使用 Python 3.6、Tensorflow 2.1、cond-rnn 2.1)

import numpy as np

from tensorflow.keras.models import Model
from tensorflow.keras.layers import LSTM, Dense, Input
from cond_rnn import ConditionalRNN

inputs = Input(name='in',shape=(5,5)) # Each observation has 5 dimensions à 5 time-steps each
x = Dense(64)(inputs)

inputs_aux = Input(name='in_aux', shape=[5]) # For each of the 5 dimensions, a non-time-series observation too
x = ConditionalRNN(7, cell='LSTM')([x,inputs_aux]) # Updated Syntax for cond_rnn v2.1
# x = ConditionalRNN(7, cell='LSTM', cond=inputs_aux)(x) # Syntax for cond_rnn in some version before v2.1

predictions = Dense(1)(x)
model = Model(inputs=[inputs, inputs_aux], outputs=predictions) # With this fix, [inputs, inputs_aux], it now works, solving the issue
#model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop', loss='mean_squared_error', metrics=['mse'])
data = np.random.standard_normal([100,5,5]) # Sample of 100 observations with 5 dimensions à 5 time-steps each
data_aux = np.random.standard_normal([100,5]) # Sample of 100 observations with 5 dimensions à only 1 non-time-series value each
labels = np.random.standard_normal(size=[100]) # For each of the 100 obs., a corresponding (single) outcome variable

model.fit([data,data_aux], labels)

我得到的错误是
tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'in_aux' with dtype float and shape [?,5]
[[{{node in_aux}}]]

回溯是
Traceback (most recent call last):
File "/home/florian/temp_nonclear/playground/test/est1ls_bare.py", line 20, in <module>
model.fit({'in': data, 'in_aux': data_aux}, labels) #model.fit([data,data_aux], labels) # Also crashes when using model.fit({'in': data, 'in_aux': data_aux}, labels)
File "/home/florian/BB/tsgenerator/ts_wgan/venv/lib/python3.5/site-packages/tensorflow/python/keras/engine/training.py", line 643, in fit
use_multiprocessing=use_multiprocessing)
File "/home/florian/BB/tsgenerator/ts_wgan/venv/lib/python3.5/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 664, in fit
steps_name='steps_per_epoch')
File "/home/florian/BB/tsgenerator/ts_wgan/venv/lib/python3.5/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 383, in model_iteration
batch_outs = f(ins_batch)
File "/home/florian/BB/tsgenerator/ts_wgan/venv/lib/python3.5/site-packages/tensorflow/python/keras/backend.py", line 3353, in __call__
run_metadata=self.run_metadata)
File "/home/florian/BB/tsgenerator/ts_wgan/venv/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1458, in __call__
run_metadata_ptr)

最佳答案

我注意到你没有通过 inputs_aux作为模型的输入。 TF 正在提示,因为计算您的输出需要此张量 predictions它没有被赋予任何值(value)。如下定义模型应该可以解决问题:

model = Model(inputs=[inputs, inputs_aux], outputs=predictions)

关于tensorflow - 使用 Keras Functional API 将时间序列与 RNN/LSTM 中的时不变数据相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324671/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com