在张量流或张量流中转换日期

时间:2019-04-16 14:19:42

标签: date tensorflow tfx

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

例如,我可能需要在2019年1月4日到2019年4月16日之间的天数有所不同,但是这种差异也可能跨越数天,数月或数年。

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

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

1 个答案:

答案 0 :(得分:0)

我有类似的问题。由于在TFX中使用if-check而不考虑日期类型而导致的问题。据我所知,有两个选择:

  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类型。