PINN求解burger方程,tensorflow框架,附代碼(三)

PINN求解burger方程,tensorflow框架,附代碼(三)

TensorFlow 1.x和TensorFlow 2.x區(qū)別

  • TensorFlow 1.x版本只有靜態(tài)圖模式,需要手動(dòng)構(gòu)建計(jì)算圖,調(diào)試?yán)щy,但性能好。
  • TensorFlow 2.x 初期:默認(rèn)Eager Execution,易于調(diào)試,但性能較差。TensorFlow 2.x + @tf.function:兩全其美:易于調(diào)試 + 高性能,方便在Eager Execution和 Graph Execution間轉(zhuǎn)換

本文提供的代碼采用2.x版本


正問(wèn)題

已知,控制方程形式:

初始條件:

邊界條件:

該方程的解析表達(dá)式通過(guò)Hopf-Cole變換獲得,較為復(fù)雜,感興趣的讀者可自行搜索。

    @tf.function
    def net_f(self, x, t):
        """Compute physics residual"""
        # 使用單個(gè)GradientTape計(jì)算所有導(dǎo)數(shù)
        with tf.GradientTape() as tape2:
            tape2.watch([x, t])
            with tf.GradientTape(persistent=True) as tape1:
                tape1.watch([x, t])
                u = self.net_u(x, t)
            # 計(jì)算一階導(dǎo)數(shù)
            u_t = tape1.gradient(u, t)
            u_x = tape1.gradient(u, x)
        # 計(jì)算二階導(dǎo)數(shù)
        u_xx = tape2.gradient(u_x, x)
        # 清理tapes
        del tape1
        # Burgers方程殘差: u_t + u*u_x - nu*u_xx
        f = u_t + u * u_x - self.nu * u_xx
        return f
  • persistent=True時(shí),tape1可以多次使用,但是需要手動(dòng)管理內(nèi)存,tape2自動(dòng)清理。
  • 代碼運(yùn)行在Eager Execution模式下,但通過(guò)@tf.function可以在關(guān)鍵函數(shù)上獲得了Graph Execution的性能優(yōu)化。PINN求解burger方程,tensorflow框架,附代碼(三)的圖1

反問(wèn)題

參數(shù)和未知,控制方程形式:

已知一些測(cè)試點(diǎn)數(shù)據(jù),反求未知參數(shù)。

np.linalg.norm(u_star, 2)
  • 計(jì)算u_star的2范數(shù)
u_train_noisy = u_train + noise * np.std(u_train) * np.random.randn(u_train.shape[0], u_train.shape[1])
  • 噪聲影響,np.std(u_train)是u_train的標(biāo)準(zhǔn)差,np.random.randn(u_train.shape[0], u_train.shape[1])標(biāo)準(zhǔn)正態(tài)分布取值PINN求解burger方程,tensorflow框架,附代碼(三)的圖2
  • 上圖中的黑色標(biāo)記為進(jìn)行訓(xùn)練的數(shù)據(jù)
  • 通過(guò)上圖顯示的信息,可以看到精確數(shù)據(jù)訓(xùn)練結(jié)果和帶有噪聲數(shù)據(jù)訓(xùn)練結(jié)果和真實(shí)結(jié)果的對(duì)比。

本文涉及的正反問(wèn)題完整代碼,請(qǐng)后臺(tái)回復(fù)關(guān)鍵詞" pinn-3" 獲取。

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

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

TOP