String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true
Убедитесь, что вы понимаете, почему. Это потому, что сравнение ==
сравнивает только ссылки; equals()
метод сопоставляет содержимое по символу.
Когда вы вызываете new для a
и b
, каждый получает новую ссылку, указывающую на "foo"
в таблице строк. Ссылки разные, но контент один и тот же.
Нейронная сеть, которая используется для внимания, - это не то, что тренируется отдельно. Чтобы интерпретировать в более простых словах, tanh(W[s;h])
(то, что бумага упоминает как нейронная сеть) является слоем прямой связи, который обучается вместе с кодером и декодером вместе.
Любой механизм внимания предлагает схему взвешивания для выбора и объединения подходящих состояний кодера для конкретного этапа декодирования. Предположим, что выходной сигнал кодировщика равен 1 , a 2 , .., a n . Для декодера на каждом шаге взвешенная комбинация состояний кодера дается в качестве входных данных. Оценка внимания дает соответствующие веса α 1 , α 2 , .., α n на каждом шаге декодера. Следовательно, скажем, чтобы получить выходной сигнал декодера d 1 , вход будет представлять собой 1 * α 1 + a 2 * α [ 1115] 2 + .. + a n * α n .
Веса α 1 , .. получены с помощью softmax на выходах слоя / сети внимания, в вашем случае - tanh
. В этом случае веса tanh изучаются, т. Е. Обновление tanh в обратном направлении и градиенте выполняется вместе со всей сетью кодера-декодера.