當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Tensorflow.js tf.train.Optimizer.applyGradients()用法及代碼示例

Tensorflow.js是Google開發的開源庫,用於在瀏覽器或節點環境中運行機器學習模型和深度學習神經網絡。

Tensorflow.js tf.train.Optimizer .apply Gradients() 用於通過使用計算的梯度更新變量。

用法:

Optimizer.applyGradients( variableGradients );

參數:

  • variableGradients( { [ name:String ]:tf.Tensor } | NamedTensor[ ]):變量名稱到其梯度值的映射。

返回值:空白



範例1:在這個例子中,我們將在默認值優化器的 applyGradients() 方法的幫助下更新變量的值。

Javascript


// Importing tensorflow
import * as tf from "@tensorflow/tfjs"
      
const xs = tf.tensor1d([0, 1, 2]);
const ys = tf.tensor1d([1.58, 2.24, 3.41]);
      
const x = tf.scalar(Math.random()).variable();
const y = tf.scalar(Math.random()).variable();
      
// Define a function f(x) = x^2 + y.
const f = x => (x.square()).add(y);
  
      
const learningRate = 0.05;
      
// Create adagrad optimizer
const optimizer =
tf.train.rmsprop(learningRate);
      
  
  
// Updating variable 
const varGradients = f(xs).dataSync();
for (let i = 0; i < 5; i++){
  optimizer.applyGradients(varGradients);
}
  
// Make predictions.
console.log(
`x:${x.dataSync()}, y:${y.dataSync()}`);
const preds = f(xs).dataSync();
preds.forEach((pred, i) => {
console.log(`x:${i}, pred:${pred}`);
});

輸出:

x:-0.526353657245636, y:0.15607579052448273
x:0, pred:0.15607579052448273
x:1, pred:1.1560758352279663
x:2, pred:4.156075954437256

範例2:在這個例子中,我們將在 custum 優化器的 applyGradients() 方法的幫助下更新變量。

Javascript


// Importing tensorflow
import * as tf from "@tensorflow/tfjs"
      
const xs = tf.tensor1d([0, 1, 2, 3]);
const ys = tf.tensor1d([1.3, 3.7, 12.4, 26.6]);
      
// Choosing random coefficients
const a = tf.scalar(Math.random()).variable();
const b = tf.scalar(Math.random()).variable();
const c = tf.scalar(Math.random()).variable();
      
// Defing function f = (a*x^2 + b*x + c)
const f = x => a.mul(x.mul(3)).add(b.square(x)).add(c);
  
      
// Setting congigurations for our optimizer
const learningRate = 0.01;
const initialAccumulatorValue = 10;
  
      
// Create the Optimizer
const optimizer = tf.train.adagrad(learningRate,
        initialAccumulatorValue);
      
// Updating variable
 const varGradients = f(xs).dataSync();
 for (let i = 0; i < 8; i++){
 optimizer.applyGradients(varGradients)}
  
// Make predictions.
console.log(`a:${a.dataSync()},
    b:${b.dataSync()}, c:${c.dataSync()}`);
const preds = f(xs).dataSync();
preds.forEach((pred, i) => {
console.log(`x:${i}, pred:${pred}`);
});

輸出:

a:0.032658617943525314,
    b:0.9213025569915771, c:0.7167015671730042
x:0, pred:1.565500020980835
x:1, pred:1.663475751876831
x:2, pred:1.7614517211914062
x:3, pred:1.8594274520874023

參考資料:https://js.tensorflow.org/api/3.8.0/#tf.train.Optimizer.applyGradients




相關用法


注:本文由純淨天空篩選整理自satyam00so大神的英文原創作品 Tensorflow.js tf.train.Optimizer class .applyGradients() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。