Tensorflow Hub模块重用

时间:2018-11-21 20:43:19

标签: tensorflow tensorflow-serving tensorflow-hub

说我想使用TF Hub中的特定module(文本嵌入)创建两个不同的models,然后我想将其导出并提供服务。

选项1: 为每个module导入model,将每个分类器放在顶部,然后导出2 models;在自己的docker容器中服务每个人。这些models包含基础嵌入模块和分类器。

选项2: 服务module本身,并将其输出发送到2个不同的models服务,该服务本身不包含嵌入。 (甚至有可能吗?)

我的计算机科学背景告诉我,选项2 更好,因为我们对两个模型都重新使用了原始的嵌入模块,还使模型本身与嵌入模块脱钩了。

但是,从实际的角度来看,当数据科学家进行编码时,他们正在导入module并在其顶部使用分类器进行训练,因此必须导出model本身变得很麻烦没有底层嵌入。

有人能指出我正确的方向吗?希望我的问题有意义,我自己不是数据科学家,而是更多来自开发背景。

谢谢

1 个答案:

答案 0 :(得分:1)

将分类器放置在嵌入模块的顶部会产生相当强的依赖性:必须将分类器训练到特定的嵌入空间。除非您做出非常特殊的安排,否则仅交换另一个嵌入模块将不起作用。因此,选项1相当不错:它产生了两个可以独立提供和更新的模型。它们有一些重叠,类似于使用同一库的两个静态链接程序,但是源代码仍然是模块化的:通过其公共签名使用Hub嵌入模块可以使它们互换。

相比之下,

选项2为您提供了三个具有重要依存关系的活动部分。如果您的目标是简单,那么我就不会去那里。

相关问题