5.歸一化3 節(jié)

什么是歸一化?
  • 把大數(shù)量級(jí)特征轉(zhuǎn)化為較小的數(shù)量級(jí)下,通常是[0,1]或[-1,1]
  • 例子:身高體重預(yù)測,房價(jià)預(yù)測
  • 絕大多數(shù),Tensorflow的模型不是給特別大的數(shù)設(shè)計(jì)的
  • 將不同數(shù)量級(jí)的特征轉(zhuǎn)換到同一數(shù)量級(jí),防止某個(gè)特征影響過大
操作步驟
  • 準(zhǔn)備身高體重訓(xùn)練數(shù)據(jù)并歸一化
  • 訓(xùn)練模型并測試,將結(jié)果反歸一化為正常數(shù)據(jù)。
歸一化訓(xùn)練數(shù)據(jù)
  • 準(zhǔn)備身高體重訓(xùn)練數(shù)據(jù)
  • 使用tfvis可視化訓(xùn)練數(shù)據(jù)
  • 使用tensorflow.js 的api進(jìn)行歸一化
 const heights = [150, 160, 170]
  const weights = [40, 50, 60]
  tfvis.render.scatterplot(
    { name: '身高體重訓(xùn)練集' },
    { values: heights.map((x, i) => ({ x, y: weights[i] })) },
    { xAxisDomain: [140, 180], yAxisDomain: [30, 70] }
  )
  //歸一化
  const inputs = tf.tensor(heights).sub(150).div(20)
  const labels = tf.tensor(weights).sub(40).div(20)
  //神經(jīng)元個(gè)數(shù)和inputShape
  const model = tf.sequential()
  model.add(tf.layers.dense({ units: 1, inputShape: [1] }))
  // 設(shè)置損失函數(shù)和優(yōu)化器
  model.compile({
    loss: tf.losses.meanSquaredError,
    optimizer: tf.train.sgd(0.1)
  })
  // 訓(xùn)練
  await model.fit(inputs, labels, {
    batchSize: 3,
    epochs: 200,
    callbacks: tfvis.show.fitCallbacks({ name: '訓(xùn)練過程' }, ['loss'])
  })
反歸一化

預(yù)測后,把結(jié)果反歸一化為正常數(shù)據(jù)


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容