使用 .tfrecord 文件进行预测的最佳实践

Best practices to use .tfrecord files for forecasting

store/read 数据 to/from TFRecord 文件训练预测模型的最佳做法是什么?我想建立一个模型,可以根据历史健康数据(例如,来自一组电机的历史数据,包括每个电机速度、错误率、故障、等)。

我可以使用 Apache Beam/Dataflow 进行整个预处理(规范化数据、估算缺失值、设计新功能、拆分为 train/validate/test 集等)。但我在想也许最好将原始数据存储为 .tfrecord 文件并使用 TFX 进行归一化、插补等以使实验更容易。 TFX tensorflow_transform currently doesn't support tf.SequenceExample files。因此,我想将原始数据存储为 tf.Example 文件,每条记录格式如下:

example_proto = tf.train.Example(features=tf.train.Features(feature={
    'timestamp': tf.train.Feature(int64_list=tf.train.Int64List(
        value=[1601200000, 1601200060, 1601200120, ...])),
    'feature0': tf.train.Feature(float_list=tf.train.FloatList(
        value=[np.nan, 15523.0, np.nan, ...])),
    'feature1': tf.train.Feature(float_list=tf.train.FloatList(
        value=[1.0, -8.0, np.nan, ...])),
    ...
    'label': tf.train.Feature(float_list=tf.train.FloatList(
        value=[0.5, -10.3, 2.1, ...])),
}))

你怎么看?有什么建议吗?

TFX 0.23.0 在某些组件中添加了对 TF.ExampleSequence 的支持。

您也可以按照您描述的方式使用列表 TF.Example。如果您需要根据 TF.Example 向模型提供序列,您将需要使用 TF.transform 来堆叠和重塑读入的值。

float32 = tf.reshape(
        tf.stack(...),
        [-1, timesteps, features)])