- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 TF 2.0 和 tfp 概率层,我构建了一个 keras.sequential
模型。我想将其导出以使用 TensorFlow Serving 进行服务,并且我想在可服务中包含预处理和后处理步骤。
我的预处理步骤相当简单——用显式值填充 NA,将一些字符串编码为 float ,规范化输入,以及反规范化输出。对于培训,我一直在使用 pandas 和 numpy 进行前/后处理。
我知道我可以导出 Keras 模型的权重,将 keras.sequential
包装起来在更大的 TensorFlow 图中模型的架构,使用像 tf.math.subtract(inputs, vector_of_feature_means)
这样的低级操作要进行前/后处理操作,请定义 tf.placeholders
用于我的输入和输出,并提供服务,但我觉得必须有一种更简洁的方法来做到这一点。
是否可以使用keras.layers.Add()
和keras.layers.Multiply()
在 keras.sequence
显式预处理步骤的模型,或者是否有一些更标准的方法来做这些事情?
最佳答案
根据我的理解,执行这些操作的标准且有效的方法是使用 Tensorflow Transform。这并不意味着如果我们必须使用 TF Transform,我们就应该使用整个 TFX Pipeline。 TF Transform 也可以独立使用。
Tensorflow Transform 创建一个 Beam Transormation Graph,它将这些变换作为 Tensorflow Graph 中的常量注入(inject)。由于这些转换在图中表示为常量,因此它们在训练和服务中将保持一致。培训和服务一致性的优点是
TF 变换的示例代码如下:
导入所有依赖项的代码:
try:
import tensorflow_transform as tft
import apache_beam as beam
except ImportError:
print('Installing TensorFlow Transform. This will take a minute, ignore the warnings')
!pip install -q tensorflow_transform
print('Installing Apache Beam. This will take a minute, ignore the warnings')
!pip install -q apache_beam
import tensorflow_transform as tft
import apache_beam as beam
import tensorflow as tf
import tensorflow_transform.beam as tft_beam
from tensorflow_transform.tf_metadata import dataset_metadata
from tensorflow_transform.tf_metadata import dataset_schema
下面提到的是预处理功能,其中我们提到了所有转换。截至目前,TF Transform 尚未提供用于缺失值插补的直接 API。因此,为此,我们必须使用低级 API 编写自己的代码。
def preprocessing_fn(inputs):
"""Preprocess input columns into transformed columns."""
# Since we are modifying some features and leaving others unchanged, we
# start by setting `outputs` to a copy of `inputs.
outputs = inputs.copy()
# Scale numeric columns to have range [0, 1].
for key in NUMERIC_FEATURE_KEYS:
outputs[key] = tft.scale_to_0_1(outputs[key])
for key in OPTIONAL_NUMERIC_FEATURE_KEYS:
# This is a SparseTensor because it is optional. Here we fill in a default
# value when it is missing.
dense = tf.sparse_to_dense(outputs[key].indices,
[outputs[key].dense_shape[0], 1],
outputs[key].values, default_value=0.)
# Reshaping from a batch of vectors of size 1 to a batch to scalars.
dense = tf.squeeze(dense, axis=1)
outputs[key] = tft.scale_to_0_1(dense)
# For all categorical columns except the label column, we generate a
# vocabulary but do not modify the feature. This vocabulary is instead
# used in the trainer, by means of a feature column, to convert the feature
# from a string to an integer id.
for key in CATEGORICAL_FEATURE_KEYS:
tft.vocabulary(inputs[key], vocab_filename=key)
# For the label column we provide the mapping from string to index.
table = tf.contrib.lookup.index_table_from_tensor(['>50K', '<=50K'])
outputs[LABEL_KEY] = table.lookup(outputs[LABEL_KEY])
return outputs
您可以引用下面提到的链接以获取详细信息和 TF 变换教程。
关于tensorflow - 在 keras.sequential 模型中使用 keras.layers.Add(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284828/
非常强大的开源数据挖掘工具 SPMF 的文档分别列出了它们: http://www.philippe-fournier-viger.com/spmf/index.php?link=algorithms
tf.keras.models.Sequential() 和有什么区别对比 tf.keras.Sequential() ?我不太了解它们之间的区别。有人可以向我解释一下吗?我是 TensorFlow
程序内聚说模块的部分被分组是因为它们始终遵循一定的执行顺序顺序内聚表示模块的各个部分被分组,因为一个部分的输出是另一个部分的输入像流水线一样的部分。这些定义是模棱两可的。请解释。 最佳答案 在顺序内聚
谁能解释定义以及顺序一致性和静态一致性之间的区别?以最愚蠢的形式:| 我确实读过这个:Example of execution which is sequentially consistent but
本文介绍基于 Python 语言中 TensorFlow 的 Keras 接口,实现深度神经网络回归的方法。 目录 1 写在前面
a)原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位。 b)图例说明: 原始数据:int[]a={4,6,2,8,1,9,0,3};
我正在为数据路径电路实现 FSM Controller 。 Controller 在内部递增计数器。当我模拟下面的程序时,计数器从未更新。 reg[3:0] counter; //incrementi
我对为什么REPA函数computeP将其结果打包在monad中感到困惑。它具有以下类型签名。 computeP :: (Load r1 sh e, Target r2 e, Source r2 e,
我知道同步 Ajax 已被弃用。但我有一些代码正在使用它,我的问题是: 假设方法 A 发出一个等待服务器的正常(异步)Ajax 请求。同时,一些其他事件触发方法B,该方法发出同步Ajax请求。现在,假
例如,我有一个这样的数据框,每一行没有重复的数字,数字按每一行排序。 W1 W2 W3 W4 1 1 3 4 7 2 4 5 6 7 3 1 2 5 8 4 2 5
我正在尝试合并两个模型的输出,并使用 keras 顺序模型将它们作为输入提供给第三个模型。 型号1: inputs1 = Input(shape=(750,)) x = Dense(500, acti
我有一个 JSF 页面,用户可以在其中将他们的汽车输入我的数据库。该表单具有三个输入字段: 制造商 模型 注册 我正在使用 PrimeFaces 3.0.M2,Manufacturer 和 Model
我目前有一个如下所示的 keras 模型: model = keras.Sequential() model.add(keras.layers.Dense(100, activation=tf.nn.
假设“连续”日期时间是彼此在特定时间间隔(即三十分钟)内的日期时间;非顺序日期时间是比彼此之间的时间段更长的日期时间。 给定一个由日期时间列表(作为字符串)组成的输入,我想派生一个顺序日期时间列表的列
我有许多服务器在运行,需要在它们之间生成序列号,这些序列号将以 5 个字符的字母数字字符串表示。目前,这被 Base32 编码略微篡改了自午夜以来的秒数,因为这对于测试目的来说足够独特。我们最好使用
我正在尝试使用 FadeTransition 在 3 个不同的 AnchorPane 之间切换(点击 Button),下面是我的代码, public class TestSlide extends A
这是我经常遇到的一个编程问题,我想知道是否存在一种数据结构,无论是在 C++ STL 中还是我可以自己实现的数据结构,它都提供了随机访问和顺序访问。 我可能需要这个的一个例子: 假设有 n 种类型的元
我的问题很简单,什么是验证数据传递给序列模型中的model.fit用于? 而且,它是否会影响模型的训练方式(通常使用验证集,例如,在模型中选择超参数,但我认为这不会发生在这里)? 我说的是可以这样传递
我有一个通用函数,它需要创建一个元组来调用一个我不知道其参数类型的函数。 像这样(除了这个例子中的 array 是由一些外部代码创建的,所以我不能直接应用该函数): Result apply(
给定以下方法... def doSomething1: Future[Int] = { ... } def doSomething2: Future[Int] = { ... } def doSome
我是一名优秀的程序员,十分优秀!