Как получить элемент из указанного c индекса, где index - это скалярный тензор с TensorFlow. js? - PullRequest
1 голос
/ 02 августа 2020

Я недавно закончил курс, где мы использовали старую версию TensorFlow. js, и там был полезный метод для тензоров (а не только буферов): .get(). Поскольку он был удален, мне пришлось использовать другое решение для создания моей упрощенной оптимизации скорости обучения, где я сравниваю предыдущую стоимость с новой стоимостью, если предыдущая больше, увеличиваю скорость обучения, в противном случае уменьшаю ее. Стоимость всегда является скалярным тензором, я складываю предыдущий с новой стоимостью, получаю индекс большего с помощью .argMax() и получаю элемент из моего «постоянного» тензора, который просто хранит два значения, на сколько умножить скорость обучения с помощью индекса - результат .argMax().

Пример:

let learningRate = tf.tensor(1);

const prevCost = tf.tensor(1);
const nextCost = tf.tensor(2);

const modifiers = tf.tensor([1.05, 0.5]);

const bigger = tf.stack([prevCost, nextCost]).argMax(); // 1

const modifier = modifiers.get(// if it would still exist
  bigger
); // 0.5

learningRate = learningRate.mul(modifier); // 1 * 0.5 = 0.5

Но, к сожалению, .get() больше не существует, однако быть способ сделать это.

1 Ответ

2 голосов
/ 03 августа 2020

tf.slice можно использовать, как объяснено здесь

tensor.slice([...cordinates], 1)
...