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


Tensorflow.js tf.LayersModel.fit()用法及代碼示例

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

tf.LayersModel 類的 .fit() 方法用於為固定數量的時期(數據集上的迭代)訓練模型。

用法:

fit(x, y, args?)

參數:此方法接受以下參數。

  • x:tf.Tensor 包含所有輸入數據。
  • y:tf.Tensor 包含所有輸出數據。
  • args:它是對象類型,它的變量如下:
    1. batchSize:它定義了將通過訓練傳播的樣本數量。
    2. epochs:它定義了訓練數據數組的迭代。
    3. verbose:它有助於顯示每個時期的進度。如果值為 0 - 表示在 fit() 調用期間沒有打印消息。如果值為 1 - 這意味著在 Node-js 中,它會打印進度條。在瀏覽器中,它不顯示任何操作。值 1 是默認值。 2 - 值 2 尚未實現。
    4. callbacks:它定義了在訓練期間要調用的回調列表。變量可以有一個或多個這些回調onTrainBegin()、onTrainEnd()、onEpochBegin()、onEpochEnd()、onBatchBegin()、onBatchEnd()、onYield()。
    5. validationSplit:它使用戶可以輕鬆地將訓練數據集拆分為訓練和驗證。例如:如果它的值為 validation-Split = 0.5 ,則表示使用 shuffle 前最後 50% 的數據進行驗證。
    6. validationData:它用於在最終模型之間進行選擇時給出最終模型的估計。
    7. shuffle:該值定義了每個 epoch 之前數據的 shuffle。當stepsPerEpoch 不為空時,它不起作用。
    8. classWeight:它用於對損失函數進行加權。告訴模型更多地關注來自 under-represented 類的樣本會很有用。
    9. sampleWeight:它是應用於每個樣本的模型損失的權重數組。
    10. initialEpoch:它是值定義開始訓練的時期。這對於恢複之前的訓練運行很有用。
    11. stepsPerEpoch:它在宣布一個 epoch 完成並開始下一個 epoch 之前定義了許多批次的樣本。如果未確定,則等於 1。
    12. validationSteps:如果指定了 stepsPerEpoch,則相關。停止前要驗證的總步數。
    13. yieldEvery:它定義了將主線程交給其他任務的頻率的配置。它可以是自動的,這意味著屈服發生在一定的幀率下。批次,如果值是這個,它會產生每個批次。 epoch,如果值是這個,它產生每個紀元。任何數字,如果該值是任何數字,則每毫秒產生一個數字。從不,如果該值是這個,則它永遠不會產生。

返回值:它返回了曆史的承諾。

範例1:

Javascript


// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining model
const mymodel = tf.sequential({
     layers:[tf.layers.dense({units:2, inputShape:[6]})]
});
  
// Compiling the above model
mymodel.compile({optimizer:'sgd', loss:'meanSquaredError'});
  
// Using for loop
for (let i = 0; i < 4; i++) {
     
  // Calling fit() method
  const his = await mymodel.fit(tf.zeros([6, 6]), tf.ones([6, 2]), {
       batchSize:5,
       epochs:4
   });
    
    // Printing output
    console.log(his.history.loss[1]);
}

輸出:

0.9574100375175476
0.8151942491531372
0.694103479385376
0.5909997820854187

範例2:

Javascript


// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
  
// Defining model
const mymodel = tf.sequential({
     layers:[tf.layers.dense({units:2, inputShape:[6], 
                               activation:"sigmoid"})]});
  
// Compiling the above model
mymodel.compile({optimizer:'sgd', loss:'meanSquaredError'});   
  
// Calling fit() method
 const his = await mymodel.fit(tf.truncatedNormal([6, 6]), 
                             tf.randomNormal([6, 2]), { batchSize:5,
                             epochs:4, validationSplit:0.2, 
                             shuffle:true, initialEpoch:2, 
                             stepsPerEpoch:1, validationSteps:2});
    
// Printing output
console.log(JSON.stringify(his.history));

輸出:

{"val_loss":[0.35800713300704956,0.35819053649902344],
"loss":[0.633269190788269,0.632409930229187]}

參考: https://js.tensorflow.org/api/latest/#tf.LayersModel.fit


相關用法


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