我有以下问题:
我想使用LSTM网络进行文本分类。为了加快培训速度并使代码更清晰,我想在Embedding
上使用keras.Tokenizer
图层来训练我的模型。
一旦我训练了我的模型 - 我想计算w.r.t输出的显着性图。输入。为此,我决定将Embedding
图层替换为TimeDistributedDense
。
你知道最好的方法是什么吗?对于一个简单的模型,我能够简单地重建具有已知权重的模型 - 但我想让它尽可能通用 - 例如将模型结构替换为未来,并尽可能使我的框架成为模型不可知。
答案 0 :(得分:0)
您可以在训练后使用现有图层创建新模型,而不会丢失经过训练的信息。创建模型不会覆盖值,它只是重新排列张量流。例如,如果您的模型如下所示:
# Create model for training, includes Embedding layer
in = Input(...)
em = Embedding(...)
l1 = LSTM(...)
l2 = TimeDistributed(Dense(...))
t_em = em(in)
t_l1 = l1(t_em)
t_l2 = l2(t_l1)
model_train = Model(inputs=[in], outputs=[t_l2])
model_train.compile(...)
model_train.fit(...)
# Create model for salience map, ignores Embedding layer
t_l1 = l1(in)
t_l2 = l2(in)
model_saliency = Model(inputs=[in], outputs=[t_l2])
作为旁注,TimeDistributedDense
已弃用,请使用wrappers.TimeDistributed
。