tenorflow.js lstm маскирует неверные временные шаги - PullRequest
0 голосов
/ 09 мая 2019

Я написал простую последовательность в кодировщик последовательности, используя тензор потока js.Форма ввода - [10, 1326], а форма вывода - [10].На входе может быть до 8 пустых временных шагов, всего 1 и все 0.

Вот модель:

const tf = require('@tensorflow/tfjs-node')

module.exports = function() {
  const model = tf.sequential();
  model.add(tf.layers.masking({maskValue:0, inputShape:[10, 1326]}))
  model.add(tf.layers.lstm({units:20, returnSequences:true}))
  model.add(tf.layers.lstm({units:15, returnSequences:false}))
  model.add(tf.layers.dense({units:10}))
  model.add(tf.layers.reLU({maxValue:1}))
  const optimizer = tf.train.adadelta()
  model.compile({
    optimizer:optimizer,
    loss:tf.losses.absoluteDifference,
  })
  return model
}

После некоторой тренировки я вижу такие прогнозы:

Tensor
    [[0.2750083, 0.2593362, 0.1763182, 0        , 0.0915875, 0.0430228, 0, 0, 0, 0],
     [0.2601015, 0.231798 , 0.144048 , 0        , 0.0815957, 0.056561 , 0, 0, 0, 0],
     [0.256667 , 0.2420369, 0.1736434, 0        , 0.0854579, 0.0473421, 0, 0, 0, 0],
     [0.2556586, 0.273939 , 0.1369745, 0        , 0.113734 , 0.0677839, 0, 0, 0, 0],
     [0.1967069, 0.1931839, 0.1047193, 0.0016383, 0.0509892, 0.0433681, 0, 0, 0, 0],
     [0.2441588, 0.2343057, 0.1448116, 0        , 0.0733367, 0.0689584, 0, 0, 0, 0],
     [0.2288964, 0.2493394, 0.1462133, 0        , 0.1020615, 0.0668219, 0, 0, 0, 0],
     [0.2435157, 0.2482093, 0.1485323, 0        , 0.1007352, 0.0541206, 0, 0, 0, 0],
     [0.272615 , 0.2631502, 0.1571562, 0        , 0.1078788, 0.0649559, 0, 0, 0, 0],
     [0.273352 , 0.2620186, 0.1684739, 0        , 0.0936071, 0.0462594, 0, 0, 0, 0]]

, где я ожидаю:

Tensor
    [[0.252, 0.24 , 0.162, 0.151, 0.133, 0.165, 0    , 0    , 0    , 0    ],
     [0.223, 0.222, 0.083, 0.128, 0.109, 0.13 , 0.149, 0.131, 0    , 0    ],
     [0.25 , 0.254, 0.154, 0.174, 0.166, 0.122, 0    , 0    , 0    , 0    ],
     [0.217, 0.224, 0.15 , 0.12 , 0.135, 0.115, 0.135, 0    , 0    , 0    ],
     [0.387, 0.242, 0.442, 0    , 0    , 0    , 0    , 0    , 0    , 0    ],
     [0.175, 0.239, 0.288, 0.098, 0.094, 0.062, 0.11 , 0    , 0    , 0    ],
     [0.349, 0.404, 0.318, 0    , 0    , 0    , 0    , 0    , 0    , 0    ],
     [0.195, 0.218, 0.198, 0.107, 0.132, 0.13 , 0.145, 0    , 0    , 0    ],
     [0.192, 0.188, 0.108, 0.094, 0.095, 0.087, 0.084, 0.131, 0.091, 0.093],
     [0.241, 0.208, 0.146, 0.099, 0.079, 0.094, 0.066, 0.085, 0.095, 0.083]]

4-е, а также 4 последние функции в выводе почти всегда равны 0.Есть ли что-то очевидное, чего мне здесь не хватает?Любые предложения будут потрясающими

...