11

tensorflow_hub维护者使用户可以轻松下载和使用预训练的 tensorflow 模块,例如:

import tensorflow_hub as hub

embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/1")

但是从sys.stderr它看起来好像是在本地将模块保存到一个临时目录,即

INFO:tensorflow:使用 /var/folders/j6/xczfl75n3sbfwpg4190gpb104vnlxt/T/tfhub_modules 缓存模块。INFO:tensorflow:Initialize variable module/Embeddings_en/sharded_0:0 from checkpoint b'/var/folders/j6/xczfl75n3sbfwpg4190gpb104vnlxt/T/tfhub_modules/c6f5954ffa065cdb2f2e604e740e8838bf21a2d3/variables/variables' with Embeddings_en/sharded_0 INFO:tensorflow:Initialize variable module/Embeddings_en/ sharded_1:0 from checkpoint b'/var/folders/j6/xczfl75n3sbfwpg4190gpb104vnlxt/T/tfhub_modules/c6f5954ffa065cdb2f2e604e740e8838bf21a2d3/variables/variables' with Embeddings_en/sharded_1 INFO:tensorflow:Initialize variable module/Embeddings_en/sharded_10:0 from checkpoint b'/var/文件夹/j6/xczfl75n3sbfwpg4190gpb104vnlxt/T/tfhub_modules/c6f5954ffa065cdb2f2e604e740e8838bf21a2d3/变量/变量'

机器重启后,模块被删除,hub.Module('...')再次运行代码将重新下载模块。

是否可以将模块保存到自定义目录,然后从自定义目录加载?

如果可能,如何将 tensorflow 集线器模块保存到自定义路径/从自定义路径加载/加载?

4

6 回答 6

19

您可以从 url + '?tf-hub-format=compressed' 下载您需要的模型

我尝试下载 elmo 并且成功了

网址 = https://tfhub.dev/google/elmo/2 + '?tf-hub-format=compressed'

例如:https ://tfhub.dev/google/elmo/2?tf-hub-format=compressed

该模型将作为 tar 文件下载到您的计算机。

一旦你解压文件,它就会有 tfhub_module.pb

于 2018-09-14T10:25:19.397 回答
6
  • 获取 URL 并将其更改为:

https://tfhub.dev /google/universal-sentence-encoder/ 1

到:

https://storage.googleapis.com/tfhub-modules/google/universal-sentence-encoder/1 。_ 压缩包

  • 使用 Curl 或浏览器下载。
  • 提取到首选位置(例如/home/admin/embed/
  • 将您的代码更改为:

.

import tensorflow_hub as hub 
embed = hub.load('/home/admin/embed/')
于 2019-11-07T17:03:57.620 回答
5

1) 找到你的模型:例如https://tfhub.dev/google/imagenet/inception_v1/feature_vector/1

2)获取真实的下载路径:

将 tfhub.dev 替换为 storage.googleapis.com/tfhub-modules 并附加 .tar.gz 作为后缀。

3)准备缓存:

在某些平台上,TF hub 会记录缓存目录,但有些不会。在代码中指定缓存位置要可靠得多。只需在调用 tfhub 之前将以下代码放入您的文件中即可。

os.environ["TFHUB_CACHE_DIR"] = '/tmp/tfhub'

参考:如何在没有互联网连接的情况下在本地运行 TF hub

于 2020-01-10T15:45:49.397 回答
3

对于那些仍在寻找答案的人,特别是对于 ELMO,正如@harikris 所说,您可以使用

网址 = https://tfhub.dev/google/elmo/2 + '?tf-hub-format=compressed'

下载模块的格式,例如这个链接

下载后,将内容解压缩到一个文件夹中,然后在 hub.Module 代码中只需将您的 URL 替换为目录的路径,如中所述

https://www.tensorflow.org/hub/basics

于 2019-06-07T15:02:49.353 回答
1

如果没有设置TFHUB_CACHE_DIR环境变量值,默认缓存目录为:

cache_dir = os.path.join(tempfile.gettempdir(), "tfhub_modules")

下载的集线器就在里面。

于 2019-10-18T07:53:40.587 回答
-3

确实可以指定/使用自定义目录 :) 有关说明,请参阅https://www.tensorflow.org/hub/basics上的“缓存模块”部分

于 2018-05-14T09:42:02.323 回答