????????tensorflow有關(guān)于曲線擬合的demo:https://github.com/tensorflow/tfjs-examples/tree/master/polynomial-regression-core尚困。
? ? ? ? 將代碼下載下來可以看到有幾個(gè)主要的文件:data.js卢肃、index.js甘苍、ui.js郭脂。
? ? ? ? 分別講述一下三個(gè)文件的作用:
? ? ? ? ①.data.js:負(fù)責(zé)創(chuàng)建訓(xùn)練數(shù)據(jù)集合
這個(gè)函數(shù)構(gòu)建了一個(gè) y = ax^3 + bx^2 + cx + d的多項(xiàng)式抡柿,并在這個(gè)多項(xiàng)式的基礎(chǔ)上增加噪聲 add(tf.randomNormal([numPoints], 0, sigma)) 生成散點(diǎn)圖
②index.js:根據(jù)數(shù)據(jù)集合訓(xùn)練模型
首先創(chuàng)建a、b席纽、c衔峰、d,用隨機(jī)數(shù)初始化症昏,下面將輸入數(shù)據(jù)集將它們訓(xùn)練直至擬合模型
定義訓(xùn)練的次數(shù)随闽、學(xué)習(xí)速率(學(xué)習(xí)速率約高花費(fèi)的時(shí)間越長,效果越好)肝谭、優(yōu)化器(使用梯度下降法掘宪,一種快速收斂的算法)
定義預(yù)測函數(shù),因?yàn)橐呀?jīng)事先知道生成數(shù)據(jù)使用的函數(shù)公式攘烛,因此預(yù)測函數(shù)也使用這個(gè)公式
定義損失函數(shù):用來判斷每次預(yù)測結(jié)果的優(yōu)劣程度魏滚,使用均方差
訓(xùn)練函數(shù):按照定義的訓(xùn)練次數(shù)來迭代訓(xùn)練,重復(fù)預(yù)測->判斷損失->再次預(yù)測的過程
訓(xùn)練代碼:建立數(shù)據(jù)->訓(xùn)練->控制臺(tái)打印預(yù)測結(jié)果
或者如官網(wǎng)demo所示坟漱,在網(wǎng)頁上渲染為折線圖
訓(xùn)練前:
訓(xùn)練后:
????????難道這就結(jié)束了嗎鼠次?不,這只是第一階段,我們已經(jīng)通過官網(wǎng)demo學(xué)習(xí)了曲線擬合的基本步驟:建立數(shù)據(jù)集合腥寇、預(yù)測模型成翩、損失函數(shù)、優(yōu)化器赦役、訓(xùn)練邏輯麻敌。
? ? ? ?接下來,我們進(jìn)入第二階段掂摔,也是今天要分享的重點(diǎn)术羔,擬合任意曲線。
? ? ? ?使用tensorflow.js的高階API棒呛,
? ? ? ? ①使用張量模型:
? ? ? ? ②建立神經(jīng)網(wǎng)絡(luò)聂示,高階API非常方便的地方在于將輸入層、隱藏層簇秒、輸出層封裝了內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)鱼喉,只需要調(diào)用函數(shù)即可使用完整功能:
③建立數(shù)據(jù)->訓(xùn)練->控制臺(tái)打印預(yù)測結(jié)果
代碼非常簡短,實(shí)際上隱藏了大量的細(xì)節(jié)趋观。如果不使用高階API的話扛禽,會(huì)是這樣的代碼:
擬合結(jié)果:
完整代碼: