Реализация внимания после слоя CONV и идет не так с большим количеством значений нан - PullRequest
0 голосов
/ 04 декабря 2018

Что-то не так с моей реализацией внимания, потому что я получаю много значений nan.

И я собираюсь применить внимание перед подачей в слой FC после слоя max-pool CNN.*

Форма ввода -> (10 X 500) <- вывод CNN 2D НЕ 3D из RNN </li>

Форма вывода -> (10 X 500) с учетом внимания (10X1) иприменяется

# attention layer
# Trainable parameters
with tf.variable_scope('attention') as scope:
    attention_size = 100
    w_omega = _variable_on_cpu(name='w_omega',
                               shape=[500,100]
                               ,initializer=tf.truncated_normal_initializer(stddev=0.01))
    b_omega = _variable_on_cpu(name='b_omega',
                               shape=[100]
                               ,initializer=tf.truncated_normal_initializer(stddev=0.01))
    u_omega = _variable_on_cpu(name='u_omega',
                               shape=[100]
                               ,initializer=tf.truncated_normal_initializer(stddev=0.01))
    v = tf.tanh(tf.einsum("ab,bc->ac",pool_dropout, w_omega) + b_omega)
    vu = tf.einsum("ab,b->a",v, u_omega)  # (B,T) shape
    alphas = tf.nn.softmax(vu, name='alphas')
    pool_dropout = pool_dropout * tf.expand_dims(alphas,-1)
...