Сохранение предыдущих значений Tensorflow.js тензор

#javascript #tensorflow #if-statement #optimization #tensor

#javascript #tensorflow #if-оператор #оптимизация #тензор

Вопрос:

У меня есть функция, которая сохраняет все значения тензора, а затем объединяет его в одну матрицу. Функция выглядит следующим образом:

     if (i == 1) {
        var y_pred1 = y_pred
    } else if (i == 2) {
        var y_pred2 = y_pred
    } else if (i == 3) {
        var y_pred3 = y_pred
    } else if (i == 4) {
        var y_pred4 = y_pred
    }
tf.concat([y_pred1, y_pred2, y_pred3, y_pred4])
  

Эта функция сохраняет каждое значение y_pred на каждой итерации цикла for. Есть ли способ сделать это более эффективным, чтобы мне не нужно было иметь неясное количество операторов if внутри модели. К вашему сведению y_pred — это тензор.

К вашему СВЕДЕНИЮ: i обозначает номер итерации, поэтому, если достигнута итерация 1 y_pred1 = y_pred

Комментарии:

1. Ваш код неполон, пожалуйста, хотя бы включите свой цикл. В противном случае все просто предполагают, что вы используете while a for или a for in , также отсутствует объявление и значение y_pred . Для правильной оптимизации нам нужны все эти материалы.

Ответ №1:

Если каждый тензор возвращает результат, вам, вероятно, следует использовать экземпляр Array .

Если число тензора статично, и вы знаете это заранее:

 var tf = new Array(number_of_tensors);

for (var i = 0; i < number_of_tensors; i  ) {
    var y_pred = /** get the result of your tensor **/
    tf[i] = y_pred;
}
  

И это все. В этом нет необходимости concat() , tf это уже матрица.

Если вы не знаете количество тензоров:

 // before your for-loop
var tf = new Array();

// into your for-loop
var y_pred = /** get the result of your tensor **/
tf.push(y_pred);