如何基于TensorFlow.call()实现时间序列多步平均基线模型
自定义多步平均基线模型实现
直接给出可运行的MyAverageBaseline类代码,核心逻辑是沿时间轴计算均值并保留维度,再重复指定步数得到预测结果:
import tensorflow as tf OUT_STEPS = 10 # 替换为你的目标预测步数 class MyAverageBaseline(tf.keras.Model): def call(self, inputs): # inputs 输入格式: (batch_size, 输入时间步长, 特征数) # 沿时间轴(axis=1)计算均值,keepdims=True保留时间维度,得到格式(batch_size, 1, 特征数) time_axis_mean = tf.mean(inputs, axis=1, keepdims=True) # 将均值重复OUT_STEPS次,沿时间轴扩展,输出格式(batch_size, OUT_STEPS, 特征数) return tf.repeat(time_axis_mean, repeats=OUT_STEPS, axis=1)
关键细节说明
- 必须设置
keepdims=True:如果直接用tf.mean(inputs, axis=1)会丢失时间维度,得到(batch_size, 特征数)的张量,后续无法沿时间轴完成重复操作。 tf.repeat指定axis=1:确保沿时间轴扩展,输出的时间步数严格匹配OUT_STEPS,和教程中MultiStepLastBaseline、RepeatBaseline的输出格式完全一致。
格式验证示例
若输入张量格式为(32, 24, 3)(32个样本、24个输入时间步、3个特征),模型输出格式为(32, 10, 3),完全符合多步预测的输出要求。
内容的提问来源于stack exchange,提问作者eliasmaxil
相关产品推荐
相关产品推荐

