用静态表达训练dynet中的单词嵌入?

时间:2018-11-26 12:53:06

标签: python nlp dynet

我是Dynet的新手,正在尝试使用随机梯度下降训练以下表达式。

y = softmax(U(tanh(<embedding>+b1))+b2)

其中<embedding>表示从嵌入矩阵E的5列连接的向量。对于每次迭代(训练示例),可以使用5列的不同集合。

这是到目前为止的代码:

m = dy.ParameterCollection()
E = m.add_lookup_parameters((3000,100))
b = m.add_parameters((500))
U = m.add_parameters((35,500))
bp = m.add_parameters((35))
dy.renew_cg()
x = dy.vecInput(500)
output = dy.softmax( U * (dy.tanh(x + b)) + bp) 
trainer = dy.SimpleSGDTrainer(m)
for train_x, train_y in train_data:
     e5 = dy.concatenate(E[x] for x in train_x)

但是接下来我将继续学习如何用e5向量替换原始表达式中的x,该向量是从与当前训练示例对应的列中创建的。

我应该在每次迭代中重新定义表达式,即output = dy.softmax( U * (dy.tanh(e5 + b)) + bp)还是可以重用原始表达式?

谢谢

0 个答案:

没有答案