【问题标题】:Save/Export a custom tokenizer from google colab notebook从 google colab notebook 保存/导出自定义标记器
【发布时间】:2021-06-11 11:20:27
【问题描述】:

我有一个自定义标记器,并希望将其用于生产 API 中的预测。如何保存/下载分词器?

这是我试图保存的代码:

import pickle
from tensorflow.python.lib.io import file_io

with file_io.FileIO('tokenizer.pickle', 'wb') as handle:
  pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)

没有错误,但保存后找不到标记器。所以我认为代码不起作用?

【问题讨论】:

  • 你在哪里保存?你在哪里找它?你当前的工作目录是什么?
  • 在google colab上,所以应该在G盘。但是我尝试搜索它并找不到它。
  • G盘本身有子文件夹,在Colab工作时甚至不是默认目录。请附上相关信息
  • 对不起,我不明白....默认情况下,所有内容都会自动保存在 G Drive 中。我搜索了包括所有子文件夹的整个 G Drive。我不知道要提供什么信息。你如何定义保存它的路径?所以我的代码很好,你认为标记器被保存但隐藏在某个地方?
  • My Drive > Colab Notebooks 这是所有笔记本自动保存的文件夹,我没有定义任何路径。

标签: python tensorflow google-colaboratory pickle


【解决方案1】:

情况是这样的,使用一个简单的文件将问题与不相关的特性(如 pickle、Tensorflow 和标记器)分开:

# Run in a new Colab notebook:
%pwd
/content
%ls
sample_data/

让我们保存一个简单的文件foo.npy

import numpy as np
np.save('foo', np.array([1,2,3]))

%ls
foo.npy  sample_data/

在这个阶段,%ls 应该在您的情况下显示 tokenizer.pickle 而不是 foo.npy

现在,Google Drive 和 Colab 默认不通信;你必须先mount驱动器(它会要求识别):

from google.colab import drive
drive.mount('/content/drive')

Mounted at /content/drive

之后,%ls 命令将给出:

%ls
drive/  foo.npy  sample_data/

您现在可以在drive/ 中导航(并保存)(即实际上在您的 Google 云端硬盘中),并相应地更改路径。保存在那里的任何内容都可以稍后检索。

【讨论】:

  • 感谢desertnaut 的详细回复。它并没有直接解决问题,而是让我进一步调查。问题是我将文件保存在驱动器的对等级别,而不是在其中,这就是为什么我在 gdrive 中找不到它的原因。我会把它作为答案。登陆这里的人将能够阅读我们的 cmets。