我有以下问题:
我想使用 LSTM 网络进行文本分类。为了加快训练速度并使代码更清晰,我想在
keras.Tokenizer
上使用Embedding
层来训练我的模型。一旦我训练了我的模型 - 我想计算输出的显着图。输入。为此,我决定用
TimeDistributedDense
替换Embedding
层。
您知道什么是最好的方法吗?对于一个简单的模型,我可以简单地用已知的权重重建模型 - 但我想让它尽可能通用 - 例如取代 future 的模型结构,并使我的框架尽可能与模型无关。
最佳答案
训练后,您可以使用现有层创建新模型,而不会丢失训练后的信息。创建模型不会覆盖值,它只是重新排列 tensorflow 。例如,如果您的模型如下所示:
# 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
。
关于machine-learning - 训练后如何用时间分布密集替换嵌入层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532572/