首页 > 解决方案 > 在张量流或张量流扩展中转换日期

问题描述

我正在使用 Tensorflow Extended 预处理数据,其中包括日期值(例如 16-04-2019 形式的值)。我需要对此进行一些预处理,例如两个日期之间的差异并从中提取日、月和年。

例如,我可能需要 01-04-2019 和 16-04-2019 之间的天数差异,但这种差异也可能跨越数天、数月或数年。

现在,只需使用 Python 脚本,这很容易做到,但我想知道是否也可以使用 Tensorflow 来做到这一点?对于我的用例来说,在 Tensorflow 中执行此操作很重要,因为转换需要以图形格式完成,以便我可以通过管道内的转换为模型提供服务。

为此,我正在使用 Tensorflow 1.13.1、Tensorflow Extended 和 Python 2.7。

标签: datetensorflowtfx

解决方案


我有一个类似的问题。这个问题是因为 TFX 中的 if-check with 没有考虑日期类型。据我所知,有两种选择:

  1. 预处理日期列并将其转换为int(例如调用toordinal()每个元素)字段,然后再将其读入 TFX

  2. 编辑检查类型的 TFX 函数以考虑类似日期的类型,并将它们动态转换为序数。

您可以导航到venv/lib/python3.7/site-packages/tfx/components/example_gen/utils.py并查找该功能dict_to_example。您可以像这样添加日期时间检查

def dict_to_example(instance: Dict[Text, Any]) -> tf.train.Example:
  """Converts dict to tf example."""
  feature = {}
  for key, value in instance.items():
    # TODO(jyzhao): support more types.
    if isinstance(value, datetime.datetime):  # <---- Check here
        value = value.toordinal()
    if value is None:
      feature[key] = tf.train.Feature()
   ...

value将变为int,int稍后将在函数中处理并转换为 Tensorflow 类型。


推荐阅读