我是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)
还是可以重用原始表达式?
谢谢