我正在使用Tensorflow Extended进行预处理,数据中包括日期值(例如16-04-2019形式的值)。我需要对此进行一些预处理,例如两个日期之间的差并从中提取日,月和年。
例如,我可能需要在2019年1月4日到2019年4月16日之间的天数有所不同,但是这种差异也可能跨越数天,数月或数年。
现在,仅使用Python脚本就很容易做到这一点,但是我想知道Tensorflow是否也可以做到这一点?对于我的用例而言,在Tensorflow中执行此操作非常重要,因为转换需要以图形格式完成,以便我可以在管道内进行转换以为模型提供服务。
我为此使用Tensorflow 1.13.1,Tensorflow Extended和Python 2.7。
答案 0 :(得分:0)
我有类似的问题。由于在TFX中使用if-check而不考虑日期类型而导致的问题。据我所知,有两个选择:
对日期列进行预处理,然后将其转换为int
(例如,在每个元素上调用toordinal()
)字段,然后再将其读入TFX
编辑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类型。