Я понимаю, что Keras предоставляет слой Masking
, который позволяет нам пропускать заполненный временной шаг при прохождении через RNN.Я также видел, что Masking
возвращает -0
для шагов, которые мы хотим замаскировать:
In [119]: sess.run(mask.call(u))
Out[119]:
array([[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[-0., -0., -0., -0.]],
[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[-0., -0., -0., -0.],
[-0., -0., -0., -0.]]], dtype=float32)
, где я маскирую -1
от оригинала u
:
In [121]: sess.run(u)
Out[121]:
array([[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[-1., -1., -1., -1.]],
[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[-1., -1., -1., -1.],
[-1., -1., -1., -1.]]], dtype=float32)
Как RNN пропускает эти временные шаги при подаче маскированного ввода?