Обучение встраиванию слов в 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) или я могу использовать оригинальное выражение?

Спасибо

0 ответов

Другие вопросы по тегам