Я недавно закончил курс, где мы использовали старую версию 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()
больше не существует, однако быть способ сделать это.