我正在尝试向我的模型逐步添加大量数据作为数据集(如果非常大)。在教程here的基础上,我编写了如下数据生成器:
from cmd2 import Cmd, Cmd2ArgumentParser
import cmd2
numbers = ['0', '1', '2', '3', '4']
alphabet = ['a', 'b', 'c', 'd']
class Complete(Cmd):
parser = Cmd2ArgumentParser()
parser.add_argument("type", choices=['numbers', 'alphabet'])
parser.add_argument("value")
@cmd2.with_argparser(parser)
def do_list(self, args):
self.poutput(args.value)
if __name__ == "__main__":
app = Complete()
app.cmdloop()
“ LINE A”调用的函数会在预先训练的嵌入模型(gensim_embedding_model)中查找“注释”中的单词并填充向量。
我知道这会创建批处理的嵌入表示形式,然后将其嵌入模型中以进行增量训练,并替换了试图将整个数据集的嵌入表示形式拟合到内存中的Keras EmbeddingLayer。
但是,Keras EmbeddingLayer具有一个“可训练”参数,它可以控制是否应按原样对待参数(在这种情况下为词嵌入权重),或者仅将其视为要调整的初始值。但是,使用数据生成器,我看不到如何设置此参数(或等效参数)。
我是对的,如果以这种方式使用数据生成器,那么嵌入权重仅按原样使用,将无法进一步调整吗?即,这等效于“ trainable = False”。但是通过这种实现,不可能有'trainable = True'?
谢谢