在测试期间重新加载 Keras Tokenizer
Reloading Keras Tokenizer during Testing
我按照这里的教程操作:(https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html)
不过,我修改了代码,可以通过h5py
保存生成的模型。因此,在 运行 训练脚本之后,我的目录中生成了一个 model.h5
。
现在,当我想加载它时,我的问题是我不知道如何重新启动 Tokenizer
。该教程具有以下代码行:
tokenizer = Tokenizer(nb_words=MAX_NB_WORDS)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
但假设,如果我在不同的模块中重新加载 model.h5
,我将需要创建另一个 Tokenizer
来标记测试集。但是,新的 Tokenizer
将适合测试数据,从而创建一个完全不同的词 table.
因此,我的问题是:如何重新加载在训练数据集上训练的Tokenizer
?我是否以某种方式误解了 Keras 中 Embedding
层的功能?现在,我假设由于我们根据预训练的词嵌入将某些词索引映射到它们相应的嵌入向量,所以词索引需要保持一致。但是,如果我们在测试数据集上执行另一个 fit_on_texts
,这是不可能的。
谢谢您,期待您的解答!
Check out this question
评论者建议使用 pickle 来保存对象和状态,但问题仍然存在,为什么这种功能没有内置到 keras 中。
我按照这里的教程操作:(https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html)
不过,我修改了代码,可以通过h5py
保存生成的模型。因此,在 运行 训练脚本之后,我的目录中生成了一个 model.h5
。
现在,当我想加载它时,我的问题是我不知道如何重新启动 Tokenizer
。该教程具有以下代码行:
tokenizer = Tokenizer(nb_words=MAX_NB_WORDS)
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
但假设,如果我在不同的模块中重新加载 model.h5
,我将需要创建另一个 Tokenizer
来标记测试集。但是,新的 Tokenizer
将适合测试数据,从而创建一个完全不同的词 table.
因此,我的问题是:如何重新加载在训练数据集上训练的Tokenizer
?我是否以某种方式误解了 Keras 中 Embedding
层的功能?现在,我假设由于我们根据预训练的词嵌入将某些词索引映射到它们相应的嵌入向量,所以词索引需要保持一致。但是,如果我们在测试数据集上执行另一个 fit_on_texts
,这是不可能的。
谢谢您,期待您的解答!
Check out this question 评论者建议使用 pickle 来保存对象和状态,但问题仍然存在,为什么这种功能没有内置到 keras 中。