在 Tensorflow 中更改 3D Tensor 以获得形状(BATCH_SIZE、SEQ_LEN、1)

Change 3D Tensor to get shape (BATCH_SIZE, SEQ_LEN, 1) in Tensorflow

提问人:Krishnang K Dalal 提问时间:10/24/2023 最后编辑:Krishnang K Dalal 更新时间:10/24/2023 访问量:15

问:

我有一个 26 个月的时间序列,我用它来训练一个预测模型,该模型在查看过去 12 个月的序列后预测下个月。我已经创建了序列和目标,但无法将其转换为 LSTM 所需的形状。非常感谢您的帮助。提前非常感谢。以下是我的代码:LSTM

print(df.loc[train_samples].values.shape) ### Prints: (6176, 26)

BUFFER_SIZE = len(train_nunique)
BATCH_SIZE = 64
SEQ_LEN = 12 

train_raw = (tf.data.Dataset
            .from_tensor_slices(df.loc[train_samples].values)
            .shuffle(BUFFER_SIZE)
            .batch(BATCH_SIZE))

def create_X_y(x):
    n = x.shape[1]-1
    
    past_sequence = []
    target = []
    
    for i in range(n):
        seq_idx = i+SEQ_LEN
        target_idx = seq_idx + 1
        
        if target_idx <= n:
            past_sequence.append(x[:,i:seq_idx])
            target.append(x[:,target_idx])
    
    past_sequence = tf.convert_to_tensor(past_sequence, dtype=tf.float32)
    target = tf.convert_to_tensor(target, dtype=tf.float32)
    
    return past_sequence, target

train_ds = train_raw.map(create_X_y, tf.data.AUTOTUNE)

### Test the X, y output
for ex_train_seq, ex_train_tar in train_ds.take(1):
    print(ex_train_seq.shape)  ### Print: (13, 64, 12)
    print()
    print(ex_train_tar.shape)  ### Prints: (13, 64)

我生成序列的预处理步骤产生 (13, 64, 12) 和 (13, 64) 的 X 和 y 形状,因为它是 26 个月的滑动窗口。如何获得序列建模所需的阶数 (BATCH_SIZE, SEQ_LEN, 1) 的 X 到 和 y?如果有更好的方法来构建用于预测的数据,请随时提出建议。提前非常感谢。(64, 12, 1)(64,1)

Python TensorFlow LSTM 序列 预测

评论


答: 暂无答案