gpt4 book ai didi

python - Tensorflow - 如何处理序列输入数据(序列数据输入层)

转载 作者:行者123 更新时间:2023-12-04 10:58:45 26 4
gpt4 key购买 nike

我有一堆时间序列。
数据格式如下:

input_data = {
'category_a': tf.Variable([[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
6, 6, 8, 8, 8, 8, 9, 9, 9],
[5, 5, 5, 5, 6, 6, 6, 6, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=tf.int32),
'numeric_a': tf.Variable([[0.23378488, 0.20349434, 0.20352034, 0.20349434, 0.23378488,
0.20352034, 0.20349434, 0.20349434, 0.23378488, 0.20352034,
0.20349434, 0.20349434, 0.23378488, 0.20352034, 0.20349434,
0.20349434, 0.23378488, 0.20352034, 0.20349434, 0.20349434,
0.23378488, 0.20352034, 0.20349434, 0.20349434, 0.23378488,
0.20349434, 0.20352034, 0.20349434, 0.20719424, 0.2086331 ,
0.23439065, 0.20352887, 0.23439065, 0.20352887, 0.2086331 ,
0.20719424, 0.23439065, 0.20352887, 0.2086331 , 0.20719424,
0.20352066, 0.20349434, 0.20349434, 0.20352066, 0.23267019,
0.2035374 , 0.24012332, 0.21045385, 0.24012332, 0.21045385,
0.20349434, 0.20349434, 0.20349434],
[0.20351858, 0.20349434, 0.20349434, 0.20351858, 0.23157308,
0.23044993, 0.2035374 , 0.20349434, 0.20349434, 0.20349434,
0.20349434, 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. ]], dtype=tf.float32)
}

“类别 a”代表一个分类变量,我想对其进行单热编码(与 feature_columns 指标列一样)。
每个特征拆分张量。第一个维度表示批量大小 (2)。第二个维度是具有序列长度 (53) 的时间步长。所有序列都填充到每个批次大小的最大序列长度。每个批次的最大序列长度可能不同。

所以张量中的值是特定时间序列在给定时间步长的特征值。

如何将这些数据输入到像 lstm 这样的模型中?

我看了 tensorflow feature_columns ,它以类似的格式处理数据。
它们对于编码分类数据非常有帮助(例如,indicator_column 和 categorical_column)

我看了 keras.experimental.SequenceFeatures ,它似乎提供了所需的功能,但我无法让它工作,而且我很难找到它的工作代码片段。

我对实现是否在 Keras 中无动于衷。

最佳答案

Keras LSTM 可以处理您的输入,而无需将其存储在 tensorflow 变量中。但是,对于您的情况,您需要重新格式化数据,以便批量大小是第一个维度,第二个是时间步长,第三个是特征。

model = Sequential()
model.add(LSTM(number_of_neurons,
activation=activation_function,
return_sequences=False,
input_shape=(number_of_timesteps, number_of_features)))
input_shape option 用于定义数据的形状。

在模型结束时,您可以在 training_data 中分别提供数据和目标。和 training_target
model.fit(training_data, 
training_target,
batch_size=batch,
epochs=epoch,
validation_data=(test_data, test_target))

在你的情况下,这将是:
[[[3.0, 0.23378488], [3.0, 0.20349434], ...]
[5.0, 0.20351858], [5.0, 0.20349434], ...]
...]]]

用于序列分类的堆叠 LSTM keras 文档中的示例是一个很好的起点:
https://keras.io/getting-started/sequential-model-guide/#examples

关于python - Tensorflow - 如何处理序列输入数据(序列数据输入层),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992964/

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