PINN求解一維波動方程,pytorch框架,附代碼(二)

PINN求解一維波動方程,pytorch框架,附代碼(二)

pytorch和tensorflow區(qū)別

以下tensorflow簡稱TF

  • pytorch具有更加易用的API,目前的TF 2.x + Keras也提供類似的易用的API
  • pytorch構(gòu)建動態(tài)計算圖,方便調(diào)試,TF以靜態(tài)圖為主,有利于部署和加速,目前也支持動態(tài)圖,鼓勵用語法糖轉(zhuǎn)化為靜態(tài)圖獲得性能提升
  • 部署方面,TF有完整的工具鏈,目前pytorch也增強了部署能力
  • 可視化工具,TF集成有TensorBoard,pytorch也支持用TensorBoard

總結(jié):但隨著版本迭代,兩者正在相互借鑒優(yōu)點,差距逐漸縮小。學(xué)習(xí)階段可以采用pytorch,獲得成熟可用的項目后可以轉(zhuǎn)用tensorflow部署獲得更高的性能。

正問題

正問題是已知一切條件預(yù)測結(jié)果,這是一個確定性的計算過程。

  • 已知方程形式,且已知:

初始條件:

邊界條件:

解析解: 根據(jù)達朗貝爾公式可得:

表達式如下:

損失函數(shù)表達式:

  • 網(wǎng)絡(luò)架構(gòu)

  • 輸入層:空間坐標(biāo)(
  • 隱藏層:3層,每層50個神經(jīng)元
  • 輸出層:物理場預(yù)測值

值得一提的是: PINN本身并不提供解的存在唯一性證明。這個保證來自于應(yīng)用數(shù)學(xué)領(lǐng)域的微分方程理論。在將一個問題交給PINN求解之前,我們通常依賴于已知的數(shù)學(xué)定理來確保問題是一個“適定性問題”,即:

  • 存在性:至少有一個解。
  • 唯一性:最多有一個解。
  • 穩(wěn)定性:解連續(xù)地依賴于初始條件或邊界條件。

例如將上述波動方程初始條件中的一階導(dǎo)公式去掉,解就失去了唯一性,PINN就無法按預(yù)期工作。PINN求解一維波動方程,pytorch框架,附代碼(二)的圖1

原始采樣點

PINN求解一維波動方程,pytorch框架,附代碼(二)的圖2

損失函數(shù)變化

PINN求解一維波動方程,pytorch框架,附代碼(二)的圖3

真實結(jié)果、預(yù)測結(jié)果、絕對誤差

逆問題

逆問題是已知一些觀測數(shù)據(jù),但是不確定方程中的一些系數(shù)是多少,目標(biāo)是利用這些觀測數(shù)據(jù)來反推出方程中的系數(shù)。更進一步,有大量的觀測數(shù)據(jù),但是不知道方程的具體形式,利用已有數(shù)據(jù)來推出方程的表達式,因此逆問題可能不具備適定性,求解更困難。

  • 將上述正問題做兩點改動,1.添加一些已知觀測數(shù)據(jù)。2.參數(shù)c的數(shù)值未知。那么上述正問題就變成了一個逆問題。

此時損失函數(shù)表達式:

表示的是和參數(shù)的集合。

PINN求解一維波動方程,pytorch框架,附代碼(二)的圖4

原始采樣點

PINN求解一維波動方程,pytorch框架,附代碼(二)的圖5

損失函數(shù)變化、參數(shù)變化

PINN求解一維波動方程,pytorch框架,附代碼(二)的圖6

真實結(jié)果、預(yù)測結(jié)果、絕對誤差

本本文涉及的完整代碼,請后臺回復(fù)關(guān)鍵詞" pinn-2" 獲取。

感謝每一位朋友的關(guān)注!期待能和大家在這個領(lǐng)域攜手前行,后續(xù)會有更多技術(shù)解讀和實戰(zhàn)技巧分享,我們一起學(xué)習(xí),共同成長!~~~??????

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

1
1