Efficient physics-informed neural networks using hash encoding

論文閱讀:Efficient physics-informed neural networks using hash encoding

  • Efficient physics-informed neural networks using hash encoding
    • 簡介
    • 方法
      • PINN
      • 哈希編碼
      • 具有哈希編碼的 PINN
    • 實驗
      • Burgers 方程
      • Helmholtz 方程
      • N-S 方程
      • 訓練效率對比
  • 總結

Efficient physics-informed neural networks using hash encoding

簡介

在 PINN 中,一個偏微分方程問題的求解就需要一次對神經網絡的優化才能獲得,這使得求解 PDE 問題的成本可能很高。傳統的 PINN 訓練需要消耗 10000 個 epoch,其成本通常遠高于傳統的數值方法,這使得除了求解奇異方程之外,將 PINN 用于實際應用的吸引力較小。 PINN 成本高的主要原因是收斂所需的 epoch 數量,特別是對于復雜的函數解決方案。其中一些限制可歸因于神經網絡的低頻偏差。隨機初始化的多層感知器需要一段時間的訓練才能找到通往潛在局部最小值(有時是數千個epoch)的路徑。換句話說,考慮到神經網絡空間通常具有高維性質,在找到局部最小值之前,它首先會在隨機搜索中迷失。部分問題是由于解的坐標值(輸入)受其維度(通常是三個空間維度再加上時間維度)的限制,對神經網絡施加的影響很小,這迫使網絡最初在參數空間中自由漫游,幾乎沒有受到任何指引。通過編碼增加輸入的影響,這一限制已得到部分解決,編碼允許輸入空間具有更高維度的表示,其中標量輸入被向量替換。頻率或位置編碼給出的示例將相鄰樣本坐標的微小差異替換為位置向量表示中較大差異所表示的網絡中更深刻的變化。

提高 PINN 訓練的效率的方法大致可以分為以下三個組成部分:神經網絡 (NN) 架構設計、損失函數設計和訓練過程。本文重點關注神經網絡的設計,特別是表示輸入(使用嵌入層)。在某種程度上,PINN 可以被視為神經場表示任務(例如NeRF),其輸入是空間坐標,輸出是體素或物理場,但以偏微分方程損失作為訓練信號。受嵌入方法成功的啟發,特別是對神經場表示的輸入坐標的編碼,以及多分辨率哈希編碼在 NeRF 上最近取得的巨大進展,引發了一個邏輯問題:可以利用哈希編碼來加速 PINN 訓練嗎?多年來用作輸入坐標加密形式的哈希編碼可以提供更本地化的坐標值表示。這一多分辨率特征為圖像神經網絡功能表示(NeRF)的收斂提供了相當大的加速。 1000 個 epoch 的收斂率降低到 100 以下。這是一項重大改進,使 NeRF 得以實際使用。然而,此類表示中涉及的監督訓練不需要計算導數,而 PINN 中的 PDE 損失函數則需要計算導數。

本文將哈希編碼引入 PINN,并研究了它通過減少收斂所需的 epoch 數來解決 PINN 的成本限制。本文還研究了通過哈希編碼自動微分的適用性。具體來說,本文使用有限差分方法來確保具有哈希編碼的 NN 函數導數的穩定計算,并將其用于 PINNs 訓練。在數值示例中,在幾個偏微分方程上測試了本文的方法,以證明其在顯著降低 PINN 成本方面的潛力,并分享了可能遇到的限制。

方法

PINN

考慮 n n n Ω ? R n \Omega \subseteq \mathbb R^n Ω?Rn 和邊界 ? Ω \partial \Omega ?Ω 的連通域,一般的時間相關 PDE 可以定義為:
u t ( x ) + S ( u ( x ) , a ( x ) ) = 0 , x ∈ Ω , t ∈ [ 0 , T ] u_t(\mathbf{x})+S(u(\mathbf{x}),a(\mathbf{x}))=0,\quad\mathbf{x}\in\Omega,\quad t\in[0,T] ut?(x)+S(u(x),a(x))=0,xΩ,t[0,T]
其中 t t t x x x 分別是時間和空間坐標, S ( u , a ) S(u, a) S(u,a) 是非線性微分算子, a ∈ A a \in A aA 表示偏微分方程的參數,例如系數和初始或邊界條件, u u u 表示我們想要解決的物理場。在普通 PINN 中,由可訓練參數 θ \theta θ 參數化的神經網絡 Φ ( θ , x , t ) \varPhi (\theta, x, t) Φ(θ,x,t) 經過訓練,將輸入坐標(包括與時間相關的方程的時間)映射到輸出,輸出代表物理場(例如, 速度、壓力、渦度等)在輸入坐標位置,滿足以下方程:
? Φ ( θ , x ) ? t + S ( Φ ( θ , x ) , a ( x ) ) = 0. \frac{\partial\Phi(\theta,\mathbf{x})}{\partial t}+S(\Phi(\theta,\mathbf{x}),a(\mathbf{x}))=0. ?t?Φ(θ,x)?+S(Φ(θ,x),a(x))=0.
因此,我們可以在損失函數中使用該偏微分方程的均方殘差以及任何初始或邊界條件,
L = 1 N i ∑ j = 1 N i ( ? Φ ( θ , x j ) ? t + S ( Φ ( θ , x j ) , a ( x j ) ) ) 2 ? Interior?PDE?loss + 1 N b ∑ i = 1 N b ( B ( Φ ( θ , x i ) ) ? u b ( x i ) ) 2 , ( 3 ) ? Supcrivesd?loss?on?boundary \mathrm{L}=\underbrace{\frac1{N_i}\sum_{j=1}^{N_i}\left(\frac{\partial\Phi(\theta,\mathbf{x}_j)}{\partial t}+S(\Phi(\theta,\mathbf{x}_j),a(\mathbf{x}_j))\right)^2}_{\text{Interior PDE loss}}+\underbrace{\frac1{N_b}\sum_{i=1}^{N_b}\left(\mathcal{B}(\Phi(\theta,\mathbf{x}_i))-u_b\left(\mathbf{x}_i\right)\right)^2,\quad(3)}_{\text{Supcrivesd loss on boundary}} L=Interior?PDE?loss Ni?1?j=1Ni??(?t?Φ(θ,xj?)?+S(Φ(θ,xj?),a(xj?)))2??+Supcrivesd?loss?on?boundary Nb?1?i=1Nb??(B(Φ(θ,xi?))?ub?(xi?))2,(3)??
優化神經網絡的參數 θ \theta θ,其中 N i N_i Ni? 是域內收集點的數量, N b N_b Nb? 是邊界上的收集點的數量, u b u_b ub? 是邊界值, B \mathcal B B 是邊界算子,表示域的導數或值。

哈希編碼

對于函數學習,本文的目標是提高神經網絡對偏微分方程的逼近質量,以及給定神經網絡的訓練速度。請注意,速度是本文的主要目標。一種聰明的方法是將輸入查詢(例如空間坐標和時間)編碼到高維空間。在這里,本文使用 Müller 等人提出的哈希編碼。哈希編碼的總體思想是將多分辨率分解與哈希表相結合,以緊湊地表示 3D 形狀。然后,復雜的 3D 現實世界可以通過小型神經網絡和可訓練的哈希編碼參數來表示。

在這里插入圖片描述

上圖描述了根據 Müller 等人使用的圖表建模的哈希編碼機制。 模擬域 x i x_i xi? 中的每個樣本都可以使用從低到高的 S S S 級分辨率來描述。對于每個分辨率級別,如上圖中的粉色或藍色點,計算嵌入向量。具體來說,首先找到它的體素頂點(2D 情況下有 4 個頂點,3D 情況下有 8 個頂點),然后使用可訓練的哈希表,其中包括每個分辨率級別的長度為 L L L 的固定特征和哈希表大小 T T T,評估每個頂點相應的嵌入向量。然后,我們使用頂點向量的線性插值來獲得 x i x_i xi? 在不同級別的嵌入向量。最后, x i x_i xi? 的哈希編碼是來自不同級別的這些嵌入向量的串聯。

具體地,給定編碼級別S以及最細和最粗分辨率 R f R_f Rf? R c R_c Rc?,每個級別的分辨率 R s R_s Rs? 由幾何級數確定,如下:
R s : = ? R c ? b s ? , b : = exp ? ( ln ? R f ? ln ? R c S ? 1 ) . \begin{aligned} R_s&:=\left\lfloor R_c\cdot b^s\right\rfloor,\\ b&:=\exp\left(\frac{\ln R_f-\ln R_c}{S-1}\right). \end{aligned} Rs?b?:=?Rc??bs?,:=exp(S?1lnRf??lnRc??).?
那么對于 x i x_i xi?,它的頂點是 $\lfloor\mathbf{x}_{i,s}\rfloor:=\lfloor\mathbf{x}i\cdot R_s\rfloor $ 和 $\lceil\mathbf{x}{i,s}\rceil:=\lceil\mathbf{x}_i\cdot R_s\rceil $。對于粗分辨率,當頂點數 ( R s + 1 ) d (R^s+1)^d (Rs+1)d 小于哈希表 T T T 時,哈希表可以提供一對一的查詢。然而,為了更高分辨率,頂點和哈希表之間的映射是通過哈希函數來實現的
h ( x i ) = ( ? j = 1 d x i , j π j ) m o d T h(\mathbf{x}_i)=\left(\bigoplus_{j=1}^dx_{i,j}\pi_j\right)\quad\mathrm{mod~}T h(xi?)=(j=1?d?xi,j?πj?)mod?T
其中 ? \bigoplus ? 是按位“異或”XOR, π j \pi_j πj? 是唯一且大的素數。這種編碼不僅提供了輸入維度的緊湊表示,而且由于幾乎即時的哈希表查找機制,計算復雜度為 O ( 1 ) O(1) O(1),非常高效。

具有哈希編碼的 PINN

本文的目標是利用哈希編碼來加速 PINN 的收斂。然而,與 NeRF 應用不同,PINN 的損失函數需要輸出場相對于輸入坐標的導數。由于所提出的哈希編碼包括線性插值,因此這些導數可能是不連續的,這導致評估不準確,尤其是在分辨率網格的邊界附近,并且這些潛在的不連續導數對于哈希編碼的高分辨率級別更為頻繁。以一個簡單函數 f ( x ) = s i n ( x ) f (x) = sin(x) f(x)=sin(x) 為例,其各種階導數很容易獲得,可以在一個簡單的輸入為 x x x 的網絡上測試自動微分(PINN 中經常使用)的性能,該網絡函數經過訓練以輸出 f ( x ) f (x) f(x) 的值。然而,這個簡單的網絡將包含一個哈希編碼層。

在這里插入圖片描述

如上圖所示,可以觀察到基于哈希編碼的神經網絡的導數值并不準確,其準確性很大程度上取決于哈希編碼的超參數。具體來說,需要仔細選擇最粗和最細的分辨率、編碼級別以及哈希表大小,以減輕不連續性的影響,這也取決于搭配點。本文的觀點是,與高分辨率哈希中的高頻細節非常適合的哈希編碼的強度將被自動微分計算中的這一弱點所抵消。例如,使用很多級別并包括最精細的分辨率將使整個神經網絡(帶編碼的神經網絡)更好近似訓練樣本點的值,但生成的函數將缺乏平滑性,導致不穩定的導數。這是用于哈希向量的線性插值的直接結果。因此,使用當前哈希編碼實現通過自動微分評估的神經網絡的導數是不穩定的。

為了尋求有效的實現,本文轉而使用有限差分(FD)方法來計算導數,因為自動微分對于高階導數來說也很昂貴。由于有限差分(顧名思義)計算有限長度上的導數,因此它相對不受點引起的導數不連續性的影響。然而,在處理突然變化的函數時,準確性可能會略有下降,這是 PINN 的普遍弱點。 FD 方法建立在泰勒級數展開的基礎上。給定一個網格點 x i x_i xi?,可以通過限制其泰勒級數展開的長度來近似其物理場 u ( x i ) u(x_i) u(xi?),如下:
u ( x i + Δ x ) = u ( x i ) + Δ x ? u ? x ∣ x i + Δ x 2 2 ? 2 u ? x 2 ∣ x i + ? u\left(\mathbf{x}_i+\Delta\mathbf{x}\right)=u\left(\mathbf{x}_i\right)+\left.\Delta\mathbf{x}\frac{\partial u}{\partial\mathbf{x}}\right|_{\mathbf{x}_i}+\left.\frac{\Delta\mathbf{x}^2}2\frac{\partial^2u}{\partial\mathbf{x}^2}\right|_{\mathbf{x}_i}+\cdots u(xi?+Δx)=u(xi?)+Δx?x?u? ?xi??+2Δx2??x2?2u? ?xi??+?
停在二階精度,有限差分一階和二階導數由下式給出:
? u ? x ∣ x i ≈ u ( x i + Δ x ) ? u ( x i ? Δ x ) 2 Δ x , ? 2 u ? x 2 ∣ x i ≈ u ( x i + Δ x ) ? 2 u ( x i ) + u ( x i ? Δ x ) Δ x 2 . \begin{aligned} \left.\frac{\partial u}{\partial\mathbf{x}}\right|_{\mathbf{x}_i}& \approx\frac{u\left(\mathbf{x}_i+\Delta\mathbf{x}\right)-u\left(\mathbf{x}_i-\Delta\mathbf{x}\right)}{2\Delta\mathbf{x}}, \\ \left.\frac{\partial^2u}{\partial\mathbf{x}^2}\right|_{\mathbf{x}_i}& \approx\frac{u\left(\mathbf{x}_i+\Delta\mathbf{x}\right)-2u\left(\mathbf{x}_i\right)+u\left(\mathbf{x}_i-\Delta\mathbf{x}\right)}{\Delta\mathbf{x}^2}. \end{aligned} ?x?u? ?xi???x2?2u? ?xi???xu(xi?+Δx)?u(xi??Δx)?,Δx2u(xi?+Δx)?2u(xi?)+u(xi??Δx)?.?
在訓練過程中,導數計算所需的網格點應輸入神經網絡以獲得相應的場值。

在這里插入圖片描述

如上圖所示,具有哈希編碼的 NN 的導數通常比自動微分的導數更準確,但同樣需要仔細選擇編碼超參數。在這里,上圖? 中 FD 方法出現了失敗的情況,該案例是由于使用小型哈希表而導致的,這迫使神經網絡學習區分不同位置的樣本,從而導致導數計算的準確性下降。與自動微分方法相比,(b)中的二階導數雖然不平滑,但其趨勢與解析解一致。

實驗

本文通過其在三個眾所周知的偏微分方程(PDE)上的應用來展示該方法的有效性。在所有情況下,都使用 MLP 架構作為主干,使用 Tanh 作為激活函數。為了公平的效率比較,使用 FD 方法來獲得普通 PINN 和帶有哈希編碼的 PINN 的導數。同時稍微增加了普通 PINN 的寬度,使可訓練參數的數量幾乎等于具有哈希編碼的 PINN。本文在所有實驗中使用 Adam 優化器和衰減學習率來訓練這些神經網絡。

對于每個測試,通過設置解決方案精度的閾值(通過神經網絡預測的解決方案與參考解決方案之間的絕對誤差)以停止訓練并根據輪數和每個輪次的成本評估方法。由于 FD 方法在導數計算方面的靈活性,本文使用 tiny-cuda-nn 框架實現了神經網絡以進一步加速訓練過程。

Burgers 方程

首先,考慮一個具有代表粘性流體一維流動的狄利克雷邊界條件的一維時間相關方程,稱為 Burgers 方程,它是 PINN 中廣泛使用的基準。控制方程如下:
? u ? t + u ? u ? x = ν ? 2 u ? x 2 , t ∈ [ 0 , 1 ] , x ∈ [ ? 1 , 1 ] , u ( t , ? 1 ) = u ( t , 1 ) = 0 , u ( 0 , x ) = ? s i n ( π x ) , \begin{aligned} &\begin{aligned}\frac{\partial u}{\partial t}+u\frac{\partial u}{\partial x}&=\nu\frac{\partial^2u}{\partial x^2},&t\in[0,1],&x\in[-1,1],\end{aligned} \\ &u(t,-1)=u(t,1)=0, \\ &u(0,x)=-sin(\pi x), \end{aligned} ??t?u?+u?x?u??=ν?x2?2u?,?t[0,1],?x[?1,1],?u(t,?1)=u(t,1)=0,u(0,x)=?sin(πx),?
其中 ν \nu ν 是粘度參數,此處設置為 0.01 π 0.01 \pi 0.01π。對于普通 PINN,使用具有三個隱藏層 { 96 , 96 , 96 } \{96,96,96\} {96,96,96} 的 MLP,而對于具有哈希編碼的 PINN,使用大小為 { 64 , 64 , 64 } \{64,64,64\} {64,64,64} 的 MLP。學習率為 1 e ? 3 1\text e-3 1e?3,在 3000、5000、7000 和 10000 epoch 時減少 0.8 倍。使用數值解作為評估預測準確性的參考。

在這里插入圖片描述

上圖 (a) 顯示了所提出的方法和使用 12800 個配置點的普通 PINN 的收斂速度。如前所述,通過測量達到預定義精度閾值所需的 epoch 數來關注收斂速度,可以發現采用哈希編碼的 PINN 可以在不到 2500 epoch 內達到此目標精度,而普通 PINN 需要近20000個epoch。這里考慮的閾值精度為與參考解等效的解上圖 (b)

Helmholtz 方程

接下來,在二階導數問題上測試偏微分方程,該問題由著名的亥姆霍茲方程給出,該方程描述了波動現象并在地震和電磁領域有很多應用。這里考慮亥姆霍茲方程的簡單形式:
? 2 u ? 2 x + ? 2 u ? 2 y + λ u ? f ( x , y ) = 0 , u ( x , 2 ) = 0 , u ( ? 2 , y ) = 0 , u ( x , ? 2 ) = 0 , u ( y , 2 ) = 0 , f = ? ( a 1 π ) 2 sin ? ( a 1 π x ) sin ? ( a 2 π y ) ? ( a 2 π ) 2 sin ? ( a 1 π x ) sin ? ( a 2 π y ) + λ sin ? ( a 1 π x ) sin ? ( a 2 π y ) , \begin{aligned} &\begin{aligned}\frac{\partial^2u}{\partial^2x}+\frac{\partial^2u}{\partial^2y}+\lambda u-f(x,y)=0,\end{aligned} \\ &\begin{aligned}u(x,2)=0,&u(-2,y)=0,&u(x,-2)=0,&u(y,2)=0,\end{aligned} \\ &f=-\left(a_1\pi\right)^2\sin\left(a_1\pi x\right)\sin\left(a_2\pi y\right) \\ &-\left(a_2\pi\right)^2\sin\left(a_1\pi x\right)\sin\left(a_2\pi y\right) \\ &+\lambda\sin\left(a_1\pi x\right)\sin\left(a_2\pi y\right), \end{aligned} ??2x?2u?+?2y?2u?+λu?f(x,y)=0,?u(x,2)=0,?u(?2,y)=0,?u(x,?2)=0,?u(y,2)=0,?f=?(a1?π)2sin(a1?πx)sin(a2?πy)?(a2?π)2sin(a1?πx)sin(a2?πy)+λsin(a1?πx)sin(a2?πy),?
其中 f f f 是源函數, u u u 是波場, λ \lambda λ 是波數的平方, a 1 a_1 a1? a 2 a_2 a2? 是控制源項正弦特性的參數。該方程存在解析解:
u ( x , y ) = s i n ( a 1 π x ) s i n ( a 2 π y ) u(x,y)=sin(a_1\pi x)sin(a_2\pi y) u(x,y)=sin(a1?πx)sin(a2?πy)
在本例中,本文對普通 PINN 使用具有三個隱藏層 { 144 , 144 , 144 } \{144,144,144\} {144,144,144} 的 MLP,而對于具有哈希編碼的 PINN,使用 { 128 , 128 , 128 } \{128,128,128\} {128,128,128} 的 MLP。學習率為 1.5 e ? 3 1.5\text e-3 1.5e?3,在 3000、5000 和 7000 epoch 時降低了 0.8 倍。統一采樣 10000 個收集點來訓練神經網絡。

在這里插入圖片描述

亥姆霍茲方程訓練的收斂速度如上圖 (a) 所示。可以觀察到,使用哈希編碼的 PINN 收斂速度更快,并且使用哈希編碼的 PINN 的 PDE 損失和測試數據錯誤仍然可以減少。盡管如此,預測解和參考解(如上圖 (b) 所示)看起來是相同的。

N-S 方程

最后,在動態流體中的一個著名方程——納維-斯托克斯方程上測試了所提出的方法。具體來說,考慮不可壓縮流體的情況,產生基于質量和動量守恒的兩個控制方程,如下所示:
? t u ? ( x , y , t ) + u ? ( x , y , t ) ? ? u ? ( x , y , t ) + ? p = 1 R e Δ u ? ( x , y , t ) + f ( x , y ) , x ∈ ( 0 , 1 ) 2 , t ∈ ( 0 , T ] ? ? u ? ( x , t ) = 0 x ∈ ( 0 , 1 ) 2 , t ∈ [ 0 , T ] u ? ( x , 0 ) = u ? 0 ( x ) x ∈ ( 0 , 1 ) 2 \begin{aligned} \partial_{t}\vec{u}(x,y,t)+\vec{u}(x,y,t)\cdot\nabla\vec{u}(x,y,t)+\nabla p& =\frac1{Re}\Delta\vec{u}(x,y,t)+f(x,y), &x\in(0,1)^2,t\in(0,T] \\ \nabla\cdot\vec{u}(x,t)& =0 & x\in(0,1)^2,t\in[0,T] \\ \vec{u}(x,0)& =\vec{u}_0(x) & x\in(0,1)^2 \\ \end{aligned} ?t?u (x,y,t)+u (x,y,t)??u (x,y,t)+?p??u (x,t)u (x,0)?=Re1?Δu (x,y,t)+f(x,y),=0=u 0?(x)?x(0,1)2,t(0,T]x(0,1)2,t[0,T]x(0,1)2?
其中 R e Re Re 是雷諾數,在實驗中設置為100, ? \nabla ? 是散度算子, Δ \Delta Δ 是拉普拉斯算子, u ? \vec{u} u 是速度場, u ? 0 \vec{u}_0 u 0? 是初始速度場, p p p 是壓力, f f f 是外力,這里設置為零。普通 PINN 具有三個隱藏層 { 112 , 112 , 112 } \{112,112,112\} {112,112,112} ,相比之下,使用 { 64 , 64 , 64 } \{64,64,64\} {64,64,64} 作為具有哈希編碼的 PINN。學習率為 1.2 e ? 3 1.2\text e-3 1.2e?3,在 3000、5000 和 7000 epoch 時降低了 0.8 倍。統一采樣 10000 個收集點來訓練神經網絡。

在這里插入圖片描述

結果如上圖所示,其中參考解是從數值求解器獲得的。與之前的實驗一樣,所提出的方法具有快速收斂性,并且只需 2270 個 epoch 即可達到目標精度(1.5e-3)。然而,即使有 50000 個 epoch,vanilla PINN 也無法滿足目標精度。這表明所提出的方法加速了訓練并提高了準確性。

訓練效率對比

上述實驗表明,使用哈希編碼的 PINN 可以在比普通 PINN 少得多的 epoch 內進行訓練,從而實現良好的目標準確度。

在這里插入圖片描述

在上表中,對此處使用的三個示例的兩種方法進行了定量比較。可以發現采用哈希編碼的 PINN 可以使用單個 NVIDIA A100 GPU 卡在 30 秒內求解這三個著名方程。

總結

本文將哈希編碼引入 PINN 中,并使用有限差分方法克服了哈希編碼帶來的自動微分的不準確性,加速了 PINN 的訓練過程。

之前一直覺得 NeRF 和求解 PINN 之間有共同之處,也在2022中科大計算機圖形學暑期課程里看過哈希編碼加速NeRF的那篇文章,但沒有意識到在這點上是共通的,看來在這方面敏感度還是不太夠。當然,將輸入映射到高維這一方法也是十分有趣的話題,而本人對這方面其實不太感興趣,或許我該多看點這方面的方法。

相關鏈接:

  • 原文:[2302.13397] Efficient physics-informed neural networks using hash encoding (arxiv.org)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

容器資源視圖隔離 —— 筑夢之路

先做個記錄,抽空再整理 K8s 部署 Lxcfs 準入控制器,實現容器中資源單獨可見 - 「Johny」PlayGround Kubernetes 中利用 LXCFS 控制容器資源可見性 - 碼農教程 容器資源可視化隔離的實現方法_51CTO博客_容器隔離技術 Lxcfs在容器集群中的使用-騰訊云開…

06 JQuery調用接口

文章目錄 一、Qs.js庫介紹1. Qs簡介2. Qs.parse3. Qs.stringify 二、jQuery調用接口1. 增加(Create)2. 刪除(Delete)3. 讀取(Read)4. 更新(Update) 三、示例 一、Qs.js庫介紹 1. Qs…

代碼隨想錄算法訓練營 --- 第五十九天

今天同樣是單調棧,第二題很重要。 第一題: 簡介: 本題可以說和上一題很是相似,只是有一點不同,數組是循環的。本題有兩種巧妙地解法,都不難。 第一種方法(也是第一個想出來的方法&#xff09…

創建自定義Docker鏡像:一步步指南

當創建自定義Docker鏡像時,Dockerfile是關鍵的一環。這篇博客將詳細介紹如何編寫一個Dockerfile,其中包含創建自定義應用程序所需的步驟和示例。讓我們開始吧: 創建自定義Docker鏡像:一步步指南 1. 了解Dockerfile Dockerfile是…

我的acer電腦U盤裝系統前BIOS設置及裝系統過程中的操作

1、開機長按F2進入BIOS設置 2、使能F12 3、調整boot順序,使USB啟動的優先級最高 4、按F10保存退出 5、插入U盤開機,boot選擇界面無需操作,等待幾秒,默認進入U盤系統 由于既使能了F12,又將U盤的優先級進調整到了最高&…

OpenVINS學習1——數據集配置與運行

前言 OpenVINS是基于MSCKF的開源VIO算法,有非常詳細的官網文檔可以學習使用,將來一段時間的主要實踐工作,就是深度掌握這份開源代碼。 https://docs.openvins.com/ 一、環境配置與Euroc數據集運行 我的環境是Ubuntu20.04,ROS1&a…

vue3中實現el-tree通過ctrl或shift批量選擇節點并高亮展示

一、看效果&#xff1a; 按住ctrl鍵實現單個多選 按住shift實現區間范圍多選 二、代碼&#xff1a; vue頁面 <template><el-treeclass"w100%":data"$.treeData"ref"treeTab…

Unity中Batching優化的靜態合批

文章目錄 前言一、靜態合批的規則1、模型使用同一個材質2、勾選靜態合批3、對于靜態合批后的Mesh頂點總數&#xff0c;不超過2^16^即可以使用同一批次&#xff0c;超過則會開啟一個新的批次4、對與使用同一材質的不同模型間&#xff0c;紋理貼圖的問題&#xff0c;我們可以通過…

數據可視化工具選擇:功能、易用性與安全性

作為一名數據可視化大屏設計師&#xff0c;我深知選擇一款合適的數據可視化工具對于提高工作效率和呈現效果的重要性。下面&#xff0c;我將從真正對我們數據可視化大屏設計師有用的角度為大家介紹選擇數據可視化工具的一些必要條件和要求。 1. 功能強大與靈活定制 首先&…

高并發場景下的httpClient使用優化技巧

1. 背景 我們有個業務&#xff0c;會調用其他部門提供的一個基于http的服務&#xff0c;日調用量在千萬級別。使用了httpclient來完成業務。之前因為qps上不去&#xff0c;就看了一下業務代碼&#xff0c;并做了一些優化&#xff0c;記錄在這里。 先對比前后&#xff1a;優化…

如何做好口譯服務,同傳和交傳哪個服務好

隨著中國經濟的蓬勃發展和綜合實力的不斷增強&#xff0c;中國與世界各國的交流也日益頻繁。口譯作為對外交流的橋梁與紐帶&#xff0c;需求量與日俱增&#xff0c;其重要性不言而喻。那么&#xff0c;如何做好口譯服務呢&#xff1f;是同傳還是交傳更好呢&#xff1f; 業內專家…

滲透測試工具AWVS的全面解析

在當今的數字化時代&#xff0c;網絡安全已經成為了企業和個人必須關注的重要問題。為了確保網絡的安全&#xff0c;我們需要使用各種工具和技術進行檢測和防護。其中&#xff0c;滲透測試是一種非常重要的方法&#xff0c;它可以幫助我們發現網絡中的安全漏洞&#xff0c;并采…

機器人純阻抗控制接觸剛性環境

問題描述 在機器人學中&#xff0c;阻抗控制是一種常用的控制策略&#xff0c;用于管理機器人在與環境交互時的運動和力。阻抗控制背后的關鍵概念是將環境視為導納&#xff0c;而將機器人視為阻抗。 純阻抗控制接觸剛性環境時&#xff0c;機器人的行為方式主要受其阻抗參數的…

表單小程序作用體現在哪

表單的用途非常廣泛&#xff0c;它是線上收集信息或用戶預約/需求服務的重要方式&#xff0c;對商家來說如今線上平臺非常多&#xff0c;生意開展的形式也越來越多&#xff0c;比如常見的預約、報名、收款、產品支付等都可以通過表單實現。 接下來啊讓我們看看通過【雨科】平臺…

家用智能門鎖——智能指紋鎖方案

智能指紋鎖產品功能&#xff1a; 1&#xff1a;指紋識別技術&#xff1a;光學傳感器、半導體傳感器或超聲波傳感器等。 2&#xff1a;指紋容量&#xff1a;智能指紋鎖可以存儲的指紋數量&#xff0c;通常在幾十到幾百個指紋之間。 3&#xff1a;解鎖時間&#xff1a;指紋識別和…

【力扣100】8.找到字符串中所有字母異位詞

添加鏈接描述 class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:sildingstrresult[]p.join(sorted(p))for i in range(len(s)):if len(sildingstr)<len(p):sildingstrsildingstrs[i]# print(sildingstr)if len(sildingstr)len(p):sort_sildingstr.j…

Android開發常用工具類集合

目錄 DownloadGradleAPIsActivity 相關 -> ActivityUtils.java -> DemoAdaptScreen 相關 -> AdaptScreenUtils.java -> DemoApp 相關 -> AppUtils.java -> Demo欄相關 -> BarUtils.java -> Demo亮度相關 -> BrightnessUtils.java -> DemoBus 相關…

身份認證技術

身份認證是對系統的用戶進行有效性、真實性驗證。 1&#xff0e;口令認證方式 使用口令認證方式&#xff0c;用戶必須具有一個唯一的系統標識&#xff0c;并且保證口令在系統的使用和存儲過程中是安全的&#xff0c;同時口令在傳輸過程中不能被竊取、替換。另外特別要注意的是在…

解決:During handling of the above exception, another exception occurred

解決&#xff1a;During handling of the above exception, another exception occurred 文章目錄 解決&#xff1a;During handling of the above exception, another exception occurred背景報錯問題報錯翻譯報錯位置代碼報錯原因解決方法參考內容&#xff1a;今天的分享就到…

numpy數據讀取保存及速度測試

目錄 數據保存及讀取 速度比對測試 數據保存及讀取 代碼示例&#xff1a; # 導入必要的庫 import numpy as np # 生成測試數據 arr_disk np.arange(8) # 打印生成能的數據 print(arr_disk) # numpy保存數據到本地 np.save("arr_disk", arr_disk) # 加載本地數據…