【问题标题】:tf.transform: add preprocessing to Keras model?tf.transform:向 Keras 模型添加预处理?
【发布时间】:2018-10-20 08:42:08
【问题描述】:

我有一个 keras 模型,用于使用 tensorflow 后端进行文本分类。它目前假设输入是一个 numpy 整数数组。

我想对此进行修改,以便可以对原始文本进行训练和预测。根据我收集到的信息,这涉及使用tf.transform 将字符串张量转换为整数张量。

我已经使用tf.transform 完成了这项工作,但现在不确定如何将此预处理步骤作为第一层/步骤添加到我的模型中。需要明确的是,我的输入数据如下所示:

[{"review":"movie is great}, {"review":"awful film"}]

输出是:

[{"review_out": array([-1, -1, 1, 0, 2])}, {"review_out": array([-1, -1, -1, 3, 4])]

执行此操作的函数称为preprocess。所以我只想将运行preprocess 作为我的 DAG 的第一步。

我该怎么做?

作为参考,这很重要,因为我想在 ML Engine 上进行实时预测。

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    如果您使用tf.data.Dataset(),则存在一个tf.data.Dataset().map(map_func) 函数,可让您将map_func 应用于数据集的所有元素。这可用于添加您的预处理步骤。

    https://www.tensorflow.org/api_docs/python/tf/data/Dataset

    例如:

    dataset = tf.data.Dataset.from_tensor_slices((x, y))

    dataset = dataset.map(preprocess)

    model.fit(dataset, ....)

    与 numpy 数组相比,使用 tf.data.Dataset() 还有其他优势。

    【讨论】:

    • 谢谢!我正在使用tf.data.Dataset(),但我需要将预处理作为基础Tensorflow DAG 的第一步。有什么想法吗?
    • 请注意,如果预处理不是学习的一部分和/或它很繁重,您应该单独进行以避免瓶颈。
    • @THN 但是我如何确保在 ML Engine 上完成相同的预处理。目标是能够发送 ML Engine 原始文本
    • 如果是实时流数据的在线学习,您只需在学习的同时进行。在这种情况下,您应该使用异步并行处理来弥补这些影响。它被称为“预处理”是有原因的。
    • @THN 感谢您的帮助。那么按照 JordanPatterson 的建议执行预处理然后更新 serving_fn 以也使用此预处理的标准方法是?
    猜你喜欢
    • 2017-12-03
    • 2017-05-31
    • 1970-01-01
    • 2022-01-26
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多