TensorFlow实现多层感知机函数逼近
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow实现多层感知机函数逼近
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TensorFlow實現多層感知機函數逼近
準備工作
對于函數逼近,這里的損失函數是 MSE。輸入應該歸一化,隱藏層是 ReLU,輸出層最好是 Sigmoid。
下面是如何使用 MLP 進行函數逼近的示例:
-
導入需要用到的模塊:sklearn,該模塊可以用來獲取數據集,預處理數據,并將其分成訓練集和測試集;pandas,可以用來分析數據集;matplotlib 和 seaborn 可以用來可視化:
-
加載數據集并創建 Pandas 數據幀來分析數據:
-
了解一些關于數據的細節:
下表很好地描述了數據:
- 找到輸入的不同特征與輸出之間的關聯:
以下是上述代碼的輸出:
- 從前面的代碼中,可以看到三個參數 RM、PTRATIO 和 LSTAT 在幅度上與輸出之間具有大于 0.5 的相關性。選擇它們進行訓練。將數據集分解為訓練數據集和測試數據集。使用 MinMaxScaler 來規范數據集。
需要注意的一個重要變化是,由于神經網絡使用 Sigmoid 激活函數(Sigmoid 的輸出只能在 0~1 之間),所以還必須對目標值 Y 進行歸一化:
- 定義常量和超參數:
- 創建一個單隱藏層的多層感知機模型:
-
聲明訓練數據的占位符并定義損失和優化器:
-
執行計算圖:
解讀分析
在只有一個隱藏層的情況下,該模型在訓練數據集上預測房價的平均誤差為 0.0071。下圖顯示了房屋估價與實際價格的關系:
在這里,使用 TensorFlow 操作層(Contrib)來構建神經網絡層。這使得工作稍微容易一些,因為避免了分別為每層聲明權重和偏置。如果使用像 Keras 這樣的 API,工作可以進一步簡化。
下面是 Keras 中以 TensorFlow 作為后端的代碼:
前面的代碼給出了預測值和實際值之間的結果。可以看到,通過去除異常值(一些房屋價格與其他參數無關,比如最右邊的點),可以改善結果:
總結
以上是生活随笔為你收集整理的TensorFlow实现多层感知机函数逼近的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow实现多层感知机MIN
- 下一篇: TensorFlow实现超参数调整