Обучение встраиванию слов в dynet со статическим выражением?
Я новичок в Dynet и пытаюсь тренировать приведенное ниже выражение с помощью Stochastic Gradient Descent.
y = softmax(U(tanh(<embedding>+b1))+b2)
куда <embedding>
представляет вектор, объединенный из 5 столбцов матрицы вложения E
, Для каждой итерации (пример обучения) может использоваться другой набор из 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)
Но потом я застрял с тем, как продолжить замену x в исходном выражении на e5
вектор, созданный из столбцов, соответствующих текущему примеру обучения.
Должен ли я переопределить выражение в каждой итерации, т.е. output = dy.softmax( U * (dy.tanh(e5 + b)) + bp)
или я могу использовать оригинальное выражение?
Спасибо