【问题标题】:Transforming dates in tensorflow or tensorflow extended在张量流或张量流扩展中转换日期
【发布时间】:2019-04-16 14:19:42
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我也遇到了同样的问题,类似的用例。
  • github.com/tensorflow/tfx/issues/41 上发生了类似的对话。
  • 是的,这也是我的问题。我已将其发布在多个地方以扩大影响范围。
  • 您找到问题的答案了吗? GitHub 问题看起来不太乐观。
  • 没有,基本上什么都没听到。

标签: date tensorflow tfx


【解决方案1】:

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

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

  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 将变为 intint 将在稍后的函数中处理并转换为 Tensorflow 类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-23
    • 2022-09-29
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多