瀏覽器端的機器學(xué)習(xí) tensorflowjs(6) 訓(xùn)練模型

cover_002.png

現(xiàn)在模型已經(jīng)定義好了嵌施,數(shù)據(jù)也下載并進行了處理腿箩,一切準備就緒準備開始訓(xùn)練挣磨。

async function trainModel(model, inputs, labels) {
  // 準備要訓(xùn)練的模型
  model.compile({
    optimizer: tf.train.adam(),
    loss: tf.losses.meanSquaredError,
    metrics: ['mse'],
  });

  const batchSize = 32;
  const epochs = 50;

  return await model.fit(inputs, labels, {
    batchSize,
    epochs,
    shuffle: true,
    callbacks: tfvis.show.fitCallbacks(
      { name: 'Training Performance' },
      ['loss', 'mse'],
      { height: 200, callbacks: ['onEpochEnd'] }
    )
  });
}

訓(xùn)練前的一些準備

model.compile({
  optimizer: tf.train.adam(),
  loss: tf.losses.meanSquaredError,
  metrics: ['mse'],
});

在訓(xùn)練模型之前雇逞,需要 "編譯 "該模型荤懂,那么具體應(yīng)該如何做呢? 我們需要一個優(yōu)化和一個損失函數(shù),損失函數(shù)也可以理解目標函數(shù)喝峦,主要是指定訓(xùn)練势誊,讓我們訓(xùn)練一個目標,優(yōu)化器這是給出一個策略如何在訓(xùn)練過程更新參數(shù)谣蠢。

  • 優(yōu)化器粟耻。這是一種算法,是更新參數(shù)的算法眉踱。在 TensorFlow.js 中有許多優(yōu)化器可用挤忙。這里選擇了 adam 優(yōu)化器,也可以嘗試用其他優(yōu)化器
  • 損失函數(shù):其實就是一個函數(shù)谈喳,告訴模型在學(xué)習(xí)過程中册烈,在每個批次(數(shù)據(jù)子集)時的表現(xiàn)如何。這里選擇 meanSquaredError 來比較模型的預(yù)測和真實值
const batchSize = 32;
const epochs = 50;

設(shè)置超參數(shù) batchSize 和一個 epochs 的數(shù)量婿禽。

  • batchSize 指的是模型在每次迭代訓(xùn)練中看到的數(shù)據(jù)子集的大小赏僧。常見的批次大小往往在 32-512 之間取值。批次大小對于訓(xùn)練速度是有所影響的

  • epochs 完成整個數(shù)據(jù)集進行訓(xùn)練的次數(shù)

開始訓(xùn)練

return await model.fit(inputs, labels, {
  batchSize,
  epochs,
  callbacks: tfvis.show.fitCallbacks(
    { name: 'Training Performance' },
    ['loss', 'mse'],
    { height: 200, callbacks: ['onEpochEnd'] }
  )
});

model.fit 是來啟動訓(xùn)練的函數(shù)扭倾。這是一個異步函數(shù)淀零,所以返回會是一個 promise。

為了監(jiān)控訓(xùn)練進度膛壹,回調(diào)傳函數(shù)作為 model.fit 來獲取訓(xùn)練過程中信息驾中。然后回調(diào)函數(shù)使用 tfvis.show.fitCallbacks 來定義,然后可以繪制損失值對于迭代的圖標

const tensorData = convertToTensor(data);
const {inputs, labels} = tensorData;

// Train the model
await trainModel(model, inputs, labels);
console.log('Done Training');

這的注意的這部分代碼要寫在 run 函數(shù)中模聋,具體如下

async function run() {
    // 加載數(shù)據(jù)
    const data = await getData();
    // 處理原始數(shù)據(jù)肩民,將數(shù)據(jù) horsepower 映射為 x 而 mpg 則映射為 y
    const values = data.map(d => ({
      x: d.horsepower,
      y: d.mpg,
    }));
    // 將數(shù)據(jù)以散點圖形式顯示在開發(fā)者調(diào)試工具
    
  
    tfvis.render.scatterplot(
      {name: 'Horsepower v MPG'},
      {values},
      {
        xLabel: 'Horsepower',
        yLabel: 'MPG',
        height: 300
      }
    );

    const model = createModel();
    const tensorData = convertToTensor(data);
    const {inputs, labels} = tensorData;

    // Train the model
    await trainModel(model, inputs, labels);
    console.log('Done Training');
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市链方,隨后出現(xiàn)的幾起案子持痰,更是在濱河造成了極大的恐慌,老刑警劉巖祟蚀,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件共啃,死亡現(xiàn)場離奇詭異,居然都是意外死亡暂题,警方通過查閱死者的電腦和手機移剪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薪者,“玉大人纵苛,你說我怎么就攤上這事。” “怎么了攻人?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵取试,是天一觀的道長。 經(jīng)常有香客問我怀吻,道長瞬浓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任蓬坡,我火速辦了婚禮猿棉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屑咳。我一直安慰自己萨赁,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布兆龙。 她就那樣靜靜地躺著杖爽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪紫皇。 梳的紋絲不亂的頭發(fā)上慰安,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音聪铺,去河邊找鬼化焕。 笑死,一個胖子當著我的面吹牛计寇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脂倦,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼番宁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赖阻?” 一聲冷哼從身側(cè)響起蝶押,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎火欧,沒想到半個月后棋电,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡苇侵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年赶盔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榆浓。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡于未,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烘浦,我是刑警寧澤抖坪,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站闷叉,受9級特大地震影響擦俐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜握侧,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一蚯瞧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藕咏,春花似錦状知、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盲再,卻和暖如春西设,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背答朋。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工贷揽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梦碗。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓禽绪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洪规。 傳聞我的和親對象是個殘疾皇子印屁,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容