📌  相关文章
📜  Tensorflow.js tf.LayersModel 类 .fitDataset() 方法

📅  最后修改于: 2022-05-13 01:56:55.189000             🧑  作者: Mango

Tensorflow.js tf.LayersModel 类 .fitDataset() 方法

Tensorflow.js 是谷歌开发的一个开源库,用于在浏览器或节点环境中运行机器学习模型和深度学习神经网络。 Tensorflow.js tf.LayersModel 类 .fitDataset() 方法用于通过使用数据集对象来训练层模型。

句法:

LayerModel.fitDataset(dataset, args);

参数:此方法接受以下参数:

  • 数据集:它是我们训练层模型的数据集形式的输入值。
  • args:它是一个包含以下值的对象:
    • batchesPerEpoch:它是每个 epoch 中的批次数。它取决于批次的大小,随着批次大小的增加其大小减小。
    • epochs:训练模型在训练数据集中的总迭代次数。它应该是一个整数值。
    • initialEpoch:用于定义开始训练的 epoch 值。
    • validationData:用于在最终模型之间进行选择时对最终模型进行估计。
    • 详细:它有助于显示每个时期的进度。如果值为 0 – 这意味着在 fit() 调用期间没有打印消息。如果值为 1 - 这意味着在 Node.js 中,它会打印进度条。在浏览器中,它没有显示任何操作。值 1 是默认值。 2 – 值 2 尚未实现。
    • classWeight:用于对损失函数进行加权。告诉模型更多地关注来自代表性不足的类的样本可能很有用。
    • 回调:它定义了在训练期间要调用的回调列表。变量可以有一个或多个回调 onTrainBegin()、onTrainEnd()、onEpochBegin()、onEpochEnd()、onBatchBegin()、onBatchEnd()、onYield()。
    • validationBatchSize:它是定义批次大小的数字。它用于验证批量大小。这意味着我们不能一次放置超过这个值的所有数据集。它的默认值为 32。
    • validationBatches:用于验证样本批次。它用于在每个 epoch 结束时为验证目的绘制验证数据。
    • yieldEvery:它定义了将主线程让给其他任务的频率的配置。它可以是自动的,这意味着屈服以一定的帧速率发生。批次,如果值是这个,它会产生每个批次。 epoch,如果值是这个,它会产生每个 epoch。任何数字,如果该值是任何数字,它会产生每个数字毫秒。从不,如果值是这个,它永远不会产生。

回报:承诺<历史>

示例 1:在此示例中,我们将使用 CSV 数据集训练我们的图层模型。

Javascript
import * as tf from "@tensorflow/tfjs"
  
// Path for the CSV file 
const gfg_CsvFile =
'https://storage.googleapis.com/tfjs-examples/multivariate-linear-regression/data/boston-housing-train.csv';
  
async function run() {
  
    // Creating model
    const gfg_LayerModel = tf.sequential();
  
    // Adding layer to model
    const config = { units: 1, inputShape: [12] }
    const gfg_layer = tf.layers.dense(config);
    gfg_LayerModel.add(gfg_layer);
  
    // Compiling the model
    const opt = tf.train.sgd(0.00000001)
    gfg_LayerModel.compile({ optimizer: opt, 
            loss: 'meanSquaredError' });
  
    // Here we want to predict column tax
    const config2 = { columnConfigs: {
             rad: { isLabel: true } } };
  
    const csvDataset = tf.data.csv(gfg_CsvFile, config2);
  
    // Creating dataset for training
    const flattenedDataset =
        csvDataset.map(({ xs, ys }) => {
            return { xs: Object.values(xs), 
                    ys: Object.values(ys) };
        }).batch(6);
  
    // Training the model
    const Tm = await gfg_LayerModel.fitDataset(
            flattenedDataset, { epochs: 10 });
  
    for (let i = 0; i < 6; i++) {
        console.log(Tm.history.loss[i])
    }
}
run();


Javascript
import * as tf from "@tensorflow/tfjs"
  
async function run() {
  
    // Creating Layer model
    const gfg_LayerModel = tf.sequential();
  
    // Adding layer to model
    const config = { units: 4, inputShape: [4] }
    const gfg_layer = tf.layers.dense(config);
    gfg_LayerModel.add(gfg_layer);
  
    // Compiling the model
    const config2 = { optimizer: 'sgd', loss: 'meanSquaredError' }
    gfg_LayerModel.compile(config2);
  
    // Creating Datasets for training
    const array1 = [
        [1, 2, 3, 4],
        [1, 4, 6, 8],
        [1, 3, 4, 7],
        [3, 4, 7, 8]
    ];
    const array2 = [1, 1, 1, 1];
    const arrData1 = tf.data.array(array1);
    const arrData2 = tf.data.array(array2);
  
    const config3 = { xs: arrData1, ys: arrData2 }
    const arrayDataset = tf.data.zip(config3)
    const ArrayDataset = arrayDataset.batch(4);
  
    // Training the model
    const Tm = await gfg_LayerModel.fitDataset(
            ArrayDataset, { epochs: 4 });
  
    // Printing the loss after training
    console.log("Loss After Training Layer Model"
        + Tm.history.loss[0]);
}
run();


输出:

41480.109375
28887.93359375
20162.228515625
14115.478515625
9924.9404296875
7020.56005859375

示例 2:在此示例中,我们将使用数组的数据集训练我们的层模型。

Javascript

import * as tf from "@tensorflow/tfjs"
  
async function run() {
  
    // Creating Layer model
    const gfg_LayerModel = tf.sequential();
  
    // Adding layer to model
    const config = { units: 4, inputShape: [4] }
    const gfg_layer = tf.layers.dense(config);
    gfg_LayerModel.add(gfg_layer);
  
    // Compiling the model
    const config2 = { optimizer: 'sgd', loss: 'meanSquaredError' }
    gfg_LayerModel.compile(config2);
  
    // Creating Datasets for training
    const array1 = [
        [1, 2, 3, 4],
        [1, 4, 6, 8],
        [1, 3, 4, 7],
        [3, 4, 7, 8]
    ];
    const array2 = [1, 1, 1, 1];
    const arrData1 = tf.data.array(array1);
    const arrData2 = tf.data.array(array2);
  
    const config3 = { xs: arrData1, ys: arrData2 }
    const arrayDataset = tf.data.zip(config3)
    const ArrayDataset = arrayDataset.batch(4);
  
    // Training the model
    const Tm = await gfg_LayerModel.fitDataset(
            ArrayDataset, { epochs: 4 });
  
    // Printing the loss after training
    console.log("Loss After Training Layer Model"
        + Tm.history.loss[0]);
}
run();

输出:

Loss After Training Layer Model 4.386415958404541

参考: https://js.tensorflow.org/api/latest/#tf.LayersModel.fitDataset