. }7 c# i; P( S$ W" J+ Y6 e符号 表示 2 |# r+ }+ u) \0 X% b- [2 nx i x_ix , O. r* d# g$ l, T
i ' H' j9 ?/ a- z; v ' B6 {. o" e9 f$ W 输入示例# P6 ]) R$ \* K+ g; A
z i z_iz 5 [+ @/ W- R, B5 j; k5 g. n Zi4 f. c( u: o) b6 D
; |, ?# \' h: m, h1 ^' d 编码器的潜在嵌入- u7 H/ m/ U0 f1 n* D4 @+ `7 u
y i y_iy 1 _7 @% |$ [: b9 S/ Z
i; z( ?( L. {% F" S' j
! ^( e2 G: q2 n1 Y 使用聚类层计算的软聚类分配 & }& ?) [& [% T8 J+ K! b1 qΘ ΘΘ 聚类层的参数 7 g0 w0 l: a" l1 @2 Gp i k p_{ik}p $ _% H K0 B% r& y6 d l; g( h
ik , R( y% @. m+ e$ ]0 X I) O+ S# u2 j4 n3 F probability for the i-th sample to be assigned to the k-th cluster, F% G: h8 O( p
" _, C' u" h" T* C: J+ ^9 T5 o ' s6 g8 j3 z/ P: |4 |我们采用[32]提出的聚类目标和优化算法。聚类目标是最小化当前模型概率聚类预测P和目标分布Q之间的KL散度:( z: v1 S) W' b/ q3 X0 K& J) t
! U0 O6 Z+ g* ?; k( ]& C
% J* C0 l2 e) E' n1 ^- h4 p! P; i+ [
目标分布旨在通过标准化和将每个值推到更接近0或1的值来加强当前的群集分配。反复应用将P转换为Q的函数将最终导致硬分配向量。使用以下等式计算目标分布的每个成员: ) s7 }; J6 b3 f# n+ Q2 @1 Q, T$ j7 g8 f7 J3 J" @. T t
4 Z) L$ R# C9 w6 g
聚类层由为编码训练集计算的K均值质心初始化。优化以期望最大化(EM)的方式进行。 / j2 v' X. F3 o; o* o在期望步骤期间,整个模型是固定的,并且目标分布Q被更新。在最大化阶段,优化模型以最小化聚类损失Lcluster。+ y5 \% z2 U5 }! D
, l: d% G: Q# `- X
3.4. Normality Scoring0 d3 H( L4 Z: Y7 Q4 X/ I3 u! [+ G
该模型支持两种类型的多模分布。一个是集群分配级别;另一个是在软分配向量级别。例如,一个动作可能被分配给多个集群(集群级分配),导致多模式软分配向量。 # s; C/ z: I& Z# }1 s" T9 ?5 y软分配向量本身(捕获动作)也可以通过多模态分布建模。 & `6 j) _9 m3 {0 R" i! t: D( U: \) a- n7 ?- ?% U# u; e- i
Dirichlet过程混合模型(DPMM)是评估比例数据分布的一种有效方法。它满足我们所需的设置:(i)估计(拟合)阶段,在此阶段,一组分布参数为评估,和(ii)推理阶段,为每个嵌入样本使用拟合模型。彻底的Blei和Jordan[4]给出了该模型的概述。 * m8 P/ x" a9 b2 t j" O) [8 G% [# f, i$ ^Dirichlet过程混合模型(DPMM)是评估比例数据分布的有效方法。它符合我们要求的设置: # v! F, M+ ~% e- G, A. l' i& N: R' g& |(i) 估计(拟合)阶段,在此期间评估一组分布参数,以及3 w) H- m1 r. S q" j+ G
(ii)推理阶段,使用拟合模型为每个嵌入样本提供分数。Blei和Jordan[4]对模型进行了全面概述。 8 u: B( l0 B+ t 5 ]1 U% ?) Z) h( `9 b* P+ t% j+ `DPMM是单峰Dirichlet分布的常见混合扩展,并使用Dirichllet过程,这DirichletDistribution的无限维扩展。该模型是多模态的,能够将每个模式捕获为混合成分。拟合模型具有多个模式,每个模式表示对应于一个正常行为的一组比例。在测试时,使用拟合模型通过其对数概率对每个样本进行评分。[4,8]中提供了关于DPMM使用的进一步解释和讨论。1 ?9 e, Q; S9 u9 _4 u$ O
3 S( s' r, V! H- Z* z$ H3 Z
3.5. Training* q! F# D! I8 N3 i# X1 K" T7 l
该模型的训练阶段包括两个阶段,一个是自动编码器的预训练阶段,其中网络的聚类分支保持不变,另一个是微调阶段,其中嵌入和聚类都得到优化。具体而言:# W+ B5 C7 n: z; n# p
, j: ~% S. E( y
Pre-Training: 该模型通过最小化重建损失(表示为Lrec)来学习编码和重建序列,Lrec是原始瞬时位姿图和ST-GCAE重建的位姿图之间的L2损失 & ] S# x; `; k' f3 c$ p! x2 U; Y; y' w/ \- O7 e4 ]6 h/ {9 b
Fine-Tuning: 1 ^) S9 k. |" s" ~/ r- ], H2 b该模型优化了由重建损失和聚类损失组成的组合损失函数。 # d w2 y0 v2 j! _2 b1 l) g$ k4 C4 U: c进行优化,使得聚类层优化为w.r.t.Lcluster,解码器优化为w.r.t.Lrec,编码器优化为w.r.t.两者。 " H( k5 q. M0 I t$ z& a集群层的初始化是通过Kmeans完成的。如[9]所示,当编码器针对这两种损失进行优化时,解码器保持不变,并充当正则化器,以保持编码器的嵌入质量。. ^4 }! t; M: j" P6 a. Z
本阶段的综合损失为:% c6 I1 B4 ]6 b3 O7 ]7 i: M! w8 g$ w
G3 @1 @/ z; V8 _% v% S, d' c: A
/ q, L8 R( A; u/ y* ^6 r+ u3 |8 ?; U* O8 y% R3 m: g' i4 N
实现细节4 S# Y3 a+ p- t2 z
3 a) B7 T6 V$ ^2 J7 @) P, |0 T0 F- `* `# v/ I+ |% |
. J0 D5 f' U/ j; h' K
def calc_reg_loss(model, reg_type='l2', avg=True): : E9 g% a7 [, U' {! b1 V reg_loss = None. S5 O5 @: p: ~) h! ~ ?
parameters = list(param for name, param in model.named_parameters() if 'bias' not in name)* d- r; F- N6 r/ a8 C3 n0 {
num_params = len(parameters) . `$ r* c! E/ l$ e* a! R7 q- u if reg_type.lower() == 'l2': - O6 f% ^7 r+ J for param in parameters:& Q& ^; \3 @9 J: b3 l
if reg_loss is None: 8 M* V" |& @- @, G reg_loss = 0.5 * torch.sum(param ** 2)/ Y! i Y7 S1 d
else:8 L# n- ]' s7 T+ ~
reg_loss = reg_loss + 0.5 * param.norm(2) ** 2 7 h$ o3 b" } h5 i: n! y8 f. o3 ^2 T8 r# `
if avg: . X2 e# ^6 t( E4 d0 u9 Y9 c3 F* V5 I reg_loss /= num_params ' e* [/ q& [& `( J- S9 W* x* }: _, z return reg_loss$ k! ^9 r- U3 O- W
else: ( P Y# p. i E1 X+ P2 R return torch.tensor(0.0, device=model.device)0 b: \1 J2 B) h3 a- s2 ?
19 H5 l0 h3 W3 g9 F# D8 W* v
2 / K2 T9 j |8 P& n: ]* a L3 $ Y5 T2 b! {8 i4; m- e* y5 X7 o" Z
5 l5 _' e6 M5 o" y$ n
63 A' B0 S' {. x, w
7+ b( ~6 {: ~9 z% [2 g- q, |- R9 t
8 ) |! A9 N& R. T( O, K; k7 E9 * ~5 \5 y6 y5 X2 t10 ; i& D* c7 K# W" ~, M11; V2 Z- _" S: S* r# O
12) a7 W; z+ P, ]9 n
13( S8 e b: U) I) A
14 ' E/ d& K! D7 s, b: o: `$ A15 3 z' ~, q* s: @! _+ [16. H& X/ O$ D5 L6 V K' f+ B1 p+ A# d
* I. r; _: V/ t) |3 o4 J% B- B! `
/ `. u- N$ o L' ] s" Z* f& \. N# D/ s) W/ u 0 L0 b3 v+ [+ D- |, oPatchModel( / |+ K2 \" o. U: z% N" u (patch_fe): Identity()0 K0 ?& Q, ^8 f% Z* y
(gcae): GCAE( / K; I/ j7 I! f( h1 t (data_bn): BatchNorm1d(54, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)8 ^# Y& Z, Z0 s7 ?; j! R* E1 E
(act): ReLU(inplace=True). ?! M+ l6 Y" f/ k3 z6 v J: Y
(st_gcn_enc): ModuleList( 3 W$ [( ]! n! V. d+ h (0): ConvBlock( y0 l5 Y$ N- @5 V) ` (act): ReLU(inplace=True)" d) x. y7 m, \9 D3 v/ K; E, I
(gcn): PyGeoConv( / P x* I! x( }6 B (g_conv): SAGC( 7 L! W) ~& ]8 |( @5 t5 D, p+ u" x (conv_a): ModuleList( " J3 N" }' f5 v* Q% F (0): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1))' d2 v9 I+ \* A4 t$ v
(1): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1))6 i4 i I' o, ?; f7 ?
(2): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1)) 4 K$ M. E$ U% Y )& R* @) U8 f4 _
(conv_b): ModuleList(; t4 Y, m" G6 `' a- g7 K5 b- x/ D
(0): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1))" d6 V) X0 ^1 R6 E S
(1): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1)), q; M8 G! H8 t: }% G: Q1 J" S% c
(2): Conv2d(3, 8, kernel_size=(1, 1), stride=(1, 1)) 9 V/ ]& j" R/ u( |( a1 [3 { ) 8 D" f0 C( ~5 Q' M, I (gconv): ModuleList(8 \; F$ m. f! g2 [% Y% T* j
(0): GraphConvBR(( P/ Y% s6 H! Q4 T
(bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 6 L, t3 i" P* d7 e. d* L- w5 a4 ^ (act): ReLU(inplace=True); D7 `" d. B, ^. m$ ~' y$ X
) 4 G2 E1 u6 D T7 n8 j v. n; ] (1): GraphConvBR( ' ^( H/ A b! O4 V (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)7 m3 o# P i2 U5 p& z
(act): ReLU(inplace=True) * V1 {# G. x1 U! ~ )7 Y& N) O6 I# x7 v
(2): GraphConvBR( ! X+ P' l! y) M) F8 f7 v0 C (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) # M2 z0 V6 X+ O (act): ReLU(inplace=True)8 N+ {6 o8 O% T, j; ]
) 8 n9 b: G P, l, [, i5 b& L6 C )% k: `, S9 O# Y% L6 u5 A8 A
(down): Sequential(6 A6 t( h) H) L0 N3 W% x3 p2 L
(0): Conv2d(3, 32, kernel_size=(1, 1), stride=(1, 1)) # m0 G, w0 Z- @. ]0 V (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) , \( w$ `5 }" v ) 5 r6 o- Y5 V2 a* t. n( A5 | (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)2 K" [' t% [- M' {' b
(soft): Softmax(dim=-2) % ^: h* ?, \" \% Q2 L (relu): CELU(alpha=0.01)( ]' e& Q- R. N) l) i
(expanding_conv): Conv2d(3, 288, kernel_size=(1, 1), stride=(1, 1), bias=False) 9 Q+ Z/ s% F* P$ w- ] e# ?4 L7 m3 g (reduction_conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)0 f) } y$ B( l8 X; Z, e$ R; a
)9 K5 ^4 ^( H, v* D. s6 T# X6 `2 r
)+ f6 W$ B% k! ~- c+ W# f( r
(tcn): Sequential( ( f1 p2 p9 V* C2 q0 t (0): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) i, F% R, v/ [2 O2 I+ k
(1): ReLU(inplace=True)8 b/ i6 r- G4 E7 _) [
(2): Conv2d(32, 32, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) 9 `4 w+ P' I, [# Y- F& } (3): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True): i. J! x& e: R# w" v# {* x
(4): Dropout(p=0.3, inplace=True) ) e4 Z4 }8 V9 E( B& T' K" V. F ) / r) t7 u% E- B5 t: t5 o G ) 9 o9 t# o9 Q: m4 S8 B0 ]& {6 L: M (1): ConvBlock(' C: {! x; s2 F; P
(act): ReLU(inplace=True) 5 U, a J( i/ O8 J, P" L' f9 Z6 _ (gcn): PyGeoConv($ U, L8 L" j( T5 o3 O5 ]- j, u
(g_conv): SAGC(3 ~$ y$ B/ J) j, o( l0 ]
(conv_a): ModuleList(5 Y, c$ q* m; @$ x
(0): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) , Y- b# r/ v6 L {/ K* X/ | (1): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) 3 O: [) f+ [1 h (2): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1))# k3 F/ S1 n+ V: K
)$ F+ l) u( m' F5 u7 ~0 b1 h! X& ~
(conv_b): ModuleList(7 Q4 p$ a; {/ x
(0): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) 4 x6 y' W9 u! f (1): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) % H+ p' O* r: y) H( ^& v: h T (2): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1))/ H1 f0 J+ D3 M3 K; {: G: ~0 K6 W/ p
)( ]- n" L' b1 y$ s: N3 R
(gconv): ModuleList(! I8 i l2 M& ?; w! }$ g1 D0 F
(0): GraphConvBR( - C9 N: h; U$ X: M4 J: | (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)& e; W# N; f, B4 o% h* n) E B
(act): ReLU(inplace=True) : {: y1 X1 E! V$ v7 F8 |% s( A )- L0 h$ R+ s# x
(1): GraphConvBR( 6 ?6 [; m% e6 l( h# a+ m/ J+ n$ F (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) / d" @% ^( [- d4 w( x) B% { (act): ReLU(inplace=True) 9 r( l7 \# i5 J ) ) I5 n5 \! S# V9 U/ L (2): GraphConvBR( ' u! j" G# S) w! m: x# ~ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)! f5 V) f6 m( e$ E% ~6 F- e
(act): ReLU(inplace=True) $ T( P2 H O) m$ q. S0 C% j ) $ g; p& s3 x* \: T+ K" { ) 3 f7 V; [ R. r (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) k$ e5 y, N F3 y- S3 f1 E (soft): Softmax(dim=-2) . Y0 @) P: L1 g8 Y& H4 v (relu): CELU(alpha=0.01)' J6 g; v; p: s" i/ }
(expanding_conv): Conv2d(32, 288, kernel_size=(1, 1), stride=(1, 1), bias=False) 7 V" g& Y4 r. v1 _ (reduction_conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1), bias=False) : k Y" f8 a0 s )4 q" Q) c7 U2 o8 D& r, `
)0 K& @8 t/ s7 c) H
(tcn): Sequential( 2 j; C- ^- {) |) ]: @) ~ (0): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True). S* p! H$ y6 G* T2 s6 @
(1): ReLU(inplace=True): {+ ~7 c V9 h- `7 \, h: G
(2): Conv2d(32, 32, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0))4 s4 J. V: u1 [' f7 G
(3): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)& l* o" ?( W0 s1 J% [# @. d
(4): Dropout(p=0.3, inplace=True) : [$ H# z4 J) ^2 ~ ) 0 ~- t: s) y! A& b ) $ l, G- e% C' ?) V. @ (2): ConvBlock(. B2 a2 w3 M$ b2 a9 U
(act): ReLU(inplace=True) $ u+ p& ^" B2 r0 T) X (gcn): PyGeoConv( 6 I0 s& P- q6 O (g_conv): SAGC(( h% o7 H; A# K/ ^+ i6 U
(conv_a): ModuleList(; { {# G) \9 X$ W' n( k, ?; y+ t
(0): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) 8 k+ L3 Q) ^% W: p/ ^ (1): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) ; d6 o+ s+ H& S. ]2 C, O4 v! d (2): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)). z0 Y- C8 V2 R
) 2 N. t4 }9 U3 Z3 w; t! a/ F (conv_b): ModuleList( % d& U. g' i) e (0): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1))* d: b o3 X; Y
(1): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1)) 2 ]8 g% g# K) B (2): Conv2d(32, 8, kernel_size=(1, 1), stride=(1, 1))5 m0 Q1 z8 l0 f) X2 U$ i$ w
) 1 E; v2 F! Q4 V* n (gconv): ModuleList( ' t# m9 }' R& B/ y& W (0): GraphConvBR(, s# ~8 y* E- Q4 S+ X( P
(bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ' P" r2 C" v* F5 f# \. j, F (act): ReLU(inplace=True)6 U# R9 a, p: u5 A
) " |; F& e; b6 \) [7 U (1): GraphConvBR(# X1 `) e" c, x* m5 o& t
(bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) % l" `: e5 x$ u+ H0 [2 f) y: Z (act): ReLU(inplace=True)# p) x1 s/ L- k5 o0 J9 j. u
)7 o, R. L& n3 H# q# G. v* D
(2): GraphConvBR(9 ?, _/ F! _1 ^ K6 @' Z6 D
(bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + |! w, x2 k; | (act): ReLU(inplace=True)7 T% x$ h7 ?3 m$ S; X4 r
) 6 `2 q# V. l3 C' q7 F! |6 [; C% f ) 6 y' D9 N% K" @6 N; ` (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 1 A* G' L1 V& A+ x) m8 t (soft): Softmax(dim=-2)/ u( X: b1 K+ Y
(relu): CELU(alpha=0.01) Z' V; M9 r0 e V. Y8 Y0 d- b (expanding_conv): Conv2d(32, 288, kernel_size=(1, 1), stride=(1, 1), bias=False)1 G# A( T* |* U0 c$ ?8 A/ A# ]' z
(reduction_conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1), bias=False) ' }1 |2 Q, G; `1 ]3 [" `7 i) U )9 D) V4 v* ^" N9 N& O+ A7 s5 ?
) + {# C0 \; I$ c/ _ (tcn): Sequential($ H% ^- G0 p% n* }" m
(0): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 0 A1 }8 Y5 X4 w: P0 Y9 ~ (1): ReLU(inplace=True)7 t j' g6 g$ y- e9 x/ d
(2): Conv2d(32, 32, kernel_size=(9, 1), stride=(2, 1), padding=(4, 0))9 _. b! T. g4 b* W* Y
(3): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 7 ^" U p- h: F# P3 L# b& p! z (4): Dropout(p=0.3, inplace=True) # m" y* q! w, c' t& B8 U0 m* X ) & {$ [9 ]- D+ w6 t4 T0 Q# M (residual): Sequential(& @* n+ \' i) D2 q/ A2 N9 F& l n
(0): Conv2d(32, 32, kernel_size=(1, 1), stride=(2, 1)) # R( `& k5 ~$ F/ h, z1 k (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 8 W" Q7 q7 B3 P" u/ t: a ) 2 }+ ~' I+ r9 p( x' N ) 7 S6 m4 U. t2 P+ X (3): ConvBlock( + @& j. N* I4 B" C% R5 f (act): ReLU(inplace=True) . W9 C$ Q- } J% E$ S1 v (gcn): PyGeoConv( + z6 M7 c6 Y ^2 ?9 y- R* S (g_conv): SAGC( $ o5 X1 `5 T1 k9 I (conv_a): ModuleList(3 _9 L) `! Y' f2 h/ C4 r0 \
(0): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1))( a) I; y1 Z, K* r2 A" r
(1): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1))$ K1 D0 s O$ M+ E
(2): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1)) 2 J& e( u* L+ q6 u8 s )8 O3 D Y8 j ?2 ?' f
(conv_b): ModuleList($ F( g) j0 u7 V2 y5 S6 X; n- V
(0): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1)): [( d4 I& b- r. }" d
(1): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1)). x! x( R9 N2 Y) N/ Z
(2): Conv2d(32, 12, kernel_size=(1, 1), stride=(1, 1)) ) n' e8 ^7 G' I- u ) / @/ [- g2 s5 t (gconv): ModuleList( 9 N& j+ ^) L2 _4 q2 ? (0): GraphConvBR( t5 d* J K6 Z( p$ O (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 0 N8 |% v! w( t, f (act): ReLU(inplace=True) ) u9 N% Y% J. b0 f6 G! b& T3 k )/ V; e- J1 ~1 ?
(1): GraphConvBR( * |4 R5 m4 c t3 {( _ (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)# Q5 w6 N; e- m' J6 y6 m
(act): ReLU(inplace=True)+ V+ V- q$ g% S3 }0 y) h
) 8 e, W8 z7 {0 P5 \5 }# r (2): GraphConvBR( 8 N: w" r9 L: v7 q: m (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) . b3 X+ r0 O9 j) \ (act): ReLU(inplace=True) [9 s( E* r, g: S+ c
)) I6 B# q9 d/ ?5 X' Q/ g, I
) 4 j: Q* g3 _9 O. g5 o6 n3 C U (down): Sequential( y: u, i& N) U* A/ O
(0): Conv2d(32, 48, kernel_size=(1, 1), stride=(1, 1)) , h/ f( J! t8 r& |/ E0 c (1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) " \* q `) v6 V3 f ) 6 ~0 e3 |1 v6 m (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ) J% E6 G+ U) @; k (soft): Softmax(dim=-2) 4 E* f+ c/ r8 F$ |8 y' c6 n, n (relu): CELU(alpha=0.01)8 F5 V8 O2 m* C% v' q& p2 x
(expanding_conv): Conv2d(32, 432, kernel_size=(1, 1), stride=(1, 1), bias=False) $ ^8 `. D! o6 } (reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False)/ h G2 h5 F) S" N! l. c9 N
) + A ^) u @. b. u: T( B ) % N$ o) W7 R& h( q2 W* r* Q (tcn): Sequential(, [; F& @$ T' L8 x* L3 q& d
(0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)) r0 v0 F' N6 g5 i7 l
(1): ReLU(inplace=True): S ?, I8 g; T" ^2 i
(2): Conv2d(48, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) 4 f* b R+ L9 ] (3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ( X8 o% i9 p+ t% z2 T (4): Dropout(p=0.3, inplace=True) , s% P% P% n9 T# g1 \2 M6 ` ): O; @ K/ u% |! \
(residual): Sequential(# q' t, [: e2 q& j. H7 {0 J3 ^
(0): Conv2d(32, 48, kernel_size=(1, 1), stride=(1, 1)) ( s- G+ i; q3 _0 I (1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) & D3 h2 c& w5 a8 G' ^ ) 0 D# T/ ^7 _' p2 P5 ~3 s )* T! w4 N% I" f9 J
(4): ConvBlock(# g; k' k7 p9 E
(act): ReLU(inplace=True)5 i" p* e# W: w7 ]0 i
(gcn): PyGeoConv($ p1 m2 v# I0 N* ^. r
(g_conv): SAGC(- o5 B, B: J6 w( r0 K" ]$ s* m+ \
(conv_a): ModuleList( 3 [8 N1 o. c5 {8 Y, P, i (0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))% g$ k' F) J7 l9 W4 Q9 u- ?# K" \
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) " L: w( r k) N- p (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) " d F1 q+ C* B% z8 C/ y) G8 E5 v8 l ) & g$ ?$ H8 C b" e, z$ Y (conv_b): ModuleList( 9 _- o% P. ?1 v9 ^( k3 z- L' P (0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))( q' \& Z e$ H6 j! q
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) 6 y$ G2 o% p7 b- ~/ y4 s8 Y7 j L (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) 1 j( d+ c+ m! E/ U* T )8 @7 q! ]8 K8 D/ l/ i! M; p
(gconv): ModuleList(3 `& D% J% c8 z: v$ k/ M! X5 s
(0): GraphConvBR(, H$ L7 o; P8 Q% M b; J. Y& e( H, c' A
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)- X" k$ T/ F9 v e: U' l
(act): ReLU(inplace=True)1 ^- s9 E3 E$ j/ z
)2 E% K4 x3 U2 u) F, G. O2 |! B; W( Z
(1): GraphConvBR(7 V' q a& G9 G: K' U" ^' t/ s
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) / P8 L2 U" v: W (act): ReLU(inplace=True)0 \$ ?1 [3 q: s$ v" p
)4 i5 f7 ] D1 Q' ?
(2): GraphConvBR( ) m" e" K; U/ K8 O+ Q { (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) # K8 @# A( G1 M7 |3 k6 k0 z (act): ReLU(inplace=True). K' \! s/ o4 c
)" m* Q) q2 O( Z$ o& K: [/ h
)' h# z" y/ @ x e5 f3 W
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) a; B; i4 c$ v1 W" W, |+ p (soft): Softmax(dim=-2)$ ?& n f) G- ^, u2 i
(relu): CELU(alpha=0.01)4 ]' c4 l: J$ V
(expanding_conv): Conv2d(48, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)8 ]. Z* e# G' A- L0 T
(reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False), G/ n5 c4 ^3 ~1 W: L5 A
) 2 F9 Z& H7 w) n0 E0 a. s0 Z& [ ) . d1 D7 J$ }; d0 k5 B (tcn): Sequential( 8 i" g% Y( T1 j (0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) # m+ Z8 d. r3 k. \ (1): ReLU(inplace=True)- Z8 _3 y# M' |. J" L) i, u
(2): Conv2d(48, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) 4 o/ p5 P" ^2 U, `% _& a2 D" o* x2 u (3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)) g1 i! X( z( Y! r
(4): Dropout(p=0.3, inplace=True)0 P1 Q% y3 x; }4 m
) 5 `: O) F* v7 _ ) ; y/ ~3 w m' O. O. M: S9 B; n (5): ConvBlock( - e: u9 g/ @# f+ V6 n, E (act): ReLU(inplace=True)# N U7 y# v7 F- q" A. f
(gcn): PyGeoConv(' B2 n" Z" {! w) t1 c
(g_conv): SAGC( 7 N* |0 `/ D6 t$ [! Y (conv_a): ModuleList(! F. e8 c8 s! v9 K% _- Y
(0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)), O7 V* H7 t* E# Y- j! a1 R& `
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))6 E! ^2 A2 t) U6 G: O2 k" l6 N8 Q4 g
(2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))/ n, t9 Z0 i6 k9 F' B. S" K
) % I. T# v9 C) i4 a& I (conv_b): ModuleList(0 s! s' ]% n K
(0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) 8 A N- ^- J5 Z( p. f5 _7 f (1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) # n; ?$ u, }* v( T; Q! G9 | (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) n% A' |8 ^7 s' s" | n: I )& U p( ^3 i$ V p" D
(gconv): ModuleList(8 u" N( `8 w9 o
(0): GraphConvBR( 7 X6 v5 H* N+ D7 r (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)3 F: D0 F: o( ~) [
(act): ReLU(inplace=True) . T, |2 A! [7 _% n ) / B! @$ D' N& Z (1): GraphConvBR( ! D# V E+ p/ u" |3 c (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ' ?' B2 E1 e3 P (act): ReLU(inplace=True)) a' r& V9 g D) P+ i, F
) Q% G) g$ C1 ?+ g5 P
(2): GraphConvBR( ) q B* [! d! K (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) & L* p& Z! ^: D4 s1 } (act): ReLU(inplace=True) 2 x2 C9 x+ T! v: z8 X U ) " d9 Z$ g* m/ `! c ) \+ x- \4 _, d/ s (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) , a+ q. X/ i* r (soft): Softmax(dim=-2)) E/ F! g! S/ n
(relu): CELU(alpha=0.01) 4 C# u; ^1 y7 @% Q# F6 l/ ?7 c6 P (expanding_conv): Conv2d(48, 432, kernel_size=(1, 1), stride=(1, 1), bias=False) 7 @/ j4 K! y" s+ ^8 Z (reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False)+ d: s1 R8 S* ?* k7 [- }8 R$ c" r
) # _5 J9 f: N/ Z" u3 ? ) $ m3 R) A; X6 T, z X i (tcn): Sequential( ; m8 m4 n A4 P2 b/ H (0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)8 x7 J; h: X5 |0 ?" }, y1 j' y
(1): ReLU(inplace=True) ; P# ^2 T' t' h1 @; Z4 i (2): Conv2d(48, 48, kernel_size=(9, 1), stride=(3, 1), padding=(4, 0))* W1 d$ H4 K( b0 R" i* W( L
(3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) : S2 L' Y* `' A: Z" i: T (4): Dropout(p=0.3, inplace=True) # h: f+ _) K6 A" @# O ) ( _' U; w9 X) k3 p$ @+ | (residual): Sequential(% W! Y. `' `& }- w, Y. Z( T; ~3 y4 \# ^
(0): Conv2d(48, 48, kernel_size=(1, 1), stride=(3, 1)) " x( B& A; Y1 F. A; i; C! h! F7 h (1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)- `# H& o. n$ K
)% L, j/ x4 [: }$ b! J) V( e
)/ a% B3 s- H# Z5 G+ W, r1 {$ K
(6): ConvBlock( & S* a. f& s- Z, @5 ]5 g (act): ReLU(inplace=True) - V6 m5 ~ P# Q/ M (gcn): PyGeoConv(& u0 B# x9 A; Y8 e4 `! t
(g_conv): SAGC(1 W! m; P, [6 H. E4 d
(conv_a): ModuleList(: h1 s3 D6 ?! A
(0): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1))/ E% o( @9 W0 B9 G' N& P
(1): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1)) 3 m$ Q0 { z4 ~. ? (2): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1)) * u! M8 b( H' f4 k/ w) w. n )( N8 b( F1 g+ U% g! ^" E8 t
(conv_b): ModuleList(+ l$ n/ R' }; }5 G$ u1 H. p
(0): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1)) 7 Y0 w( m" k% ~9 Z& s( c+ X (1): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1)) 8 l' I) f" Y0 G+ T3 R$ Y! D0 g' U/ k (2): Conv2d(48, 16, kernel_size=(1, 1), stride=(1, 1)); ^3 s) z5 n7 ]0 G& L- X1 A5 T
) 0 j! b+ }" s z# H (gconv): ModuleList( 7 p' F' K2 Y, M b/ f (0): GraphConvBR( ; A( T' G# L$ w: c; B a; g (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)/ d0 T/ `. K' w5 P' b# {- h
(act): ReLU(inplace=True) $ H6 l. |7 K: Z' ~6 f$ |9 k; G. K ) 7 o4 n7 W, ^' k* G. C3 S4 g6 S (1): GraphConvBR( f$ ^! k+ S, M; m- A) h( T
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) & e2 T& w6 s6 _' Y! m (act): ReLU(inplace=True) : r: @; {7 P0 }/ s1 u ) 6 r4 f9 P, l: c8 \% d. o (2): GraphConvBR( 4 u% A# i; a1 u# [ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)3 L+ T# c( t0 [- r) X
(act): ReLU(inplace=True)3 H; D2 ?9 ], @: L4 {& J" F8 e
)7 D% V# G5 F h/ U6 p. M
)4 m' T% C1 F+ E' x7 y' e
(down): Sequential( 0 u: h6 E4 a* F3 t) k (0): Conv2d(48, 64, kernel_size=(1, 1), stride=(1, 1))8 H2 z: V' D- C# b* M) k
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) $ T7 U- ~; F* J' n5 r6 J ) / {+ p! N4 A! {% [& o (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 6 x! l2 V; X# P (soft): Softmax(dim=-2)- U' W2 {0 j" N$ c
(relu): CELU(alpha=0.01) ; m- B% T; q- H3 a (expanding_conv): Conv2d(48, 576, kernel_size=(1, 1), stride=(1, 1), bias=False)3 O3 w- i' ~' d) u7 O
(reduction_conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) % W" H$ t) `7 d( N )0 K) ^' I# C* F4 G
) * I- F- m1 K5 \9 [* ~) w$ L, W (tcn): Sequential( ! L! b$ D# b6 C/ @4 r (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True): ~9 {3 K9 K- x: g5 u
(1): ReLU(inplace=True)5 e4 f; L7 k' b/ p' _: @8 Z
(2): Conv2d(64, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0))$ x; }! v9 W7 ~' P
(3): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 8 ]9 ?4 g6 A) M (4): Dropout(p=0.3, inplace=True)) h% U; p8 k0 i2 u! ^
)/ F* D+ S( V6 u; D, e& Q9 t# q
(residual): Sequential( , J1 }/ W3 P: \8 ]6 v# o R (0): Conv2d(48, 64, kernel_size=(1, 1), stride=(1, 1))& @3 V9 V1 Y' q7 c9 r) Q
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) . s6 |) _+ d! c6 o( U, o ) $ X" G3 Z- s% n( x0 |, N ) 0 U& {- @1 X( P# H (7): ConvBlock(- Z5 F8 n8 G" A1 C+ T1 ?9 C% f
(act): ReLU(inplace=True)3 z {! D4 r: M2 `) P1 F
(gcn): PyGeoConv( 8 G3 c0 I( | V6 U (g_conv): SAGC( ( p( w( E5 Z. V- [2 k6 ~0 E (conv_a): ModuleList(( o# i+ T& C _
(0): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) 4 q! c% _6 t% n! |; ?4 u6 B (1): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1))$ L* Y' c. U- b0 [" L
(2): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) 2 e5 k! A/ g6 O" }6 h )0 ]( W5 J* m* ^8 m/ x2 _4 t1 w8 E
(conv_b): ModuleList($ h C+ v# e- i7 A' Q
(0): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) - j: E' a( ?# I+ m (1): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) # X/ I1 M3 w( J3 L* C" @4 s (2): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) * b- T' }9 q) l- e' a0 z: O: H/ b8 ` ) & M! B# U* ~( z T! g (gconv): ModuleList(8 M) I/ u- A' X- t! y5 v
(0): GraphConvBR( . u! F( O7 L. _0 B5 ^ (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True): F) L2 G$ l. k
(act): ReLU(inplace=True) 4 ?" a: g1 ^0 M; e7 R ) ( ~. @$ h, C- Y (1): GraphConvBR( 3 C0 J4 ~, ?2 t) z (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 8 o0 t" }% ]8 {. P0 N% j; H! I (act): ReLU(inplace=True) ( g5 g8 I( r8 B4 G% y5 c5 p$ w) W )9 ?4 w+ Z. m: l, [
(2): GraphConvBR(. ~( h, @9 r7 u3 j9 d
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 1 ~. K, u/ W: {6 a6 s (act): ReLU(inplace=True)3 T" [3 u6 X( N5 y. o6 G5 o% @
)) w M. n& {2 X4 [
) ' w9 q: I! c' u) F0 i (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) Y/ ~/ Z) s L) B6 E (soft): Softmax(dim=-2)- u# S* |2 A: G0 O% e
(relu): CELU(alpha=0.01)* F# o2 b6 s) E4 t M4 N
(expanding_conv): Conv2d(64, 576, kernel_size=(1, 1), stride=(1, 1), bias=False) . g. d* P( k/ L; h2 c (reduction_conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) 0 V* F) `2 f: E' ~0 A! P )% J3 o- w8 Z; @8 X8 Z
) 3 R8 O7 E$ J! P1 ^+ x. i (tcn): Sequential( E% P4 @, @0 g) i: G. w! u (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ' i+ D5 ~8 c+ e! @! B. l4 m (1): ReLU(inplace=True)- _! E) \ X& `' `" x7 w
(2): Conv2d(64, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0))6 l Q+ \. \" A m
(3): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) . k {( H9 B. |! U" K0 `+ X* O (4): Dropout(p=0.3, inplace=True) ' G Z7 m, m8 Z )9 T5 j, k* H8 s N( ~% m8 n7 t/ @' L
) % ]& P8 f' d6 u$ E/ k (8): ConvBlock(# f* q$ w; a# N6 [* ]3 @; U6 k# f
(act): ReLU(inplace=True)$ K" H& k5 V& d! f2 T: l
(gcn): PyGeoConv(/ F. a) ?; B. a5 n. Z4 @& z
(g_conv): SAGC(3 J& g( G6 c; l4 v, J& `
(conv_a): ModuleList(+ t4 Q; I! e. O0 v
(0): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1)) 0 p( W9 c+ Z N( P6 R* _- Z (1): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1)) s- S! e9 l$ W; `7 O8 S6 h6 [' s3 O
(2): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1))0 ?7 {5 j: Y7 Z3 Q. A
)% i8 R1 c1 r8 P
(conv_b): ModuleList(' D5 W8 v c, N" X/ A
(0): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1)) / @1 s& |2 B; m, g) z (1): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1))3 F3 {! p3 w) J- t
(2): Conv2d(64, 8, kernel_size=(1, 1), stride=(1, 1))$ j* A. m! w9 q
)1 i: N2 B2 y, F6 P. z
(gconv): ModuleList( ) D5 g2 p/ ~$ ?7 ?% a* m3 ~ (0): GraphConvBR( ! S1 M1 q$ H" K+ K. u' _ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)7 S8 g Z: B+ H$ t- O- Z
(act): ReLU(inplace=True) # v. M; [& t7 h8 A ) 7 b8 q$ T6 J) u+ a6 _( O W1 ]1 g8 T (1): GraphConvBR(3 [( b9 o. u. p& v
(bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ' O; ~' H `& T8 [2 ~ (act): ReLU(inplace=True)+ b9 ^9 O, t% d7 a; x
), A$ @/ ]- {5 B
(2): GraphConvBR( 8 m, |6 s+ k* ^/ r3 N (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)2 h9 N8 G% J p. w) N: |! P
(act): ReLU(inplace=True) ; _0 L2 e4 L5 l$ h ) . y1 s) I: |9 b/ J ) + r8 [% P+ l7 ~ }+ |8 v; \ (down): Sequential( 4 s3 x( x; X7 y0 Q (0): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1)) 8 |# t; y' c! e+ F$ \- e: D! i (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ; m6 I# U' N P6 B4 R! w ) " R; k6 N8 k, @ (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) . Q+ K5 V; e$ {& y. f$ P (soft): Softmax(dim=-2) 2 F- R, F+ |5 v# l* U* y } (relu): CELU(alpha=0.01) ) A. F0 ~/ _( i/ g, A* K2 ^) } (expanding_conv): Conv2d(64, 288, kernel_size=(1, 1), stride=(1, 1), bias=False)+ ?! S0 v9 S1 ]
(reduction_conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1), bias=False) $ m' d7 O7 O' w# [7 h4 G ) 7 [, T7 i7 e$ [: }" o! t+ M )( |. p8 |% `& l
(tcn): Sequential(* |0 w! q) g* p$ O- `7 q
(0): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)7 F! Z1 n: ~3 |! ?
(1): ReLU(inplace=True)3 _: {" F4 z& K5 B" ^, J
(2): Conv2d(32, 32, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) / ~' T' S) e+ o$ E& `$ a( Q (3): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)0 M1 v8 |$ N/ a$ s) _
(4): Dropout(p=0.3, inplace=True)( T1 H3 D. O" ?6 U' o9 Y) L: f* e
) & w$ B/ @* R, |; m" v$ c6 W6 S (residual): Sequential( / V. f" z7 |% a: n5 G" r (0): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1)). X: Y/ M/ z6 B7 Y( C7 G% E; i% R
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)" c! w1 u! E; N- \4 j( V+ B
) * Q2 B6 Q* N1 I. C! ]1 D' W ) 7 e- R2 O# p ?/ U! P ^- @) x )* e$ Y1 F% Y; V' Z
(dec_final_gcn): ConvBlock( ' h. w# H3 ^, \& k. b (act): ReLU(inplace=True)* n0 D6 [( u3 e* s
(gcn): PyGeoConv( + A+ G0 h. n& f5 W/ Z9 n, R (g_conv): ConvTemporalGraphical(9 }7 ~& W2 K# k- T
(conv): Conv2d(48, 9, kernel_size=(1, 1), stride=(1, 1)) ]" w" ~& U0 B" h ) 2 J! C0 c1 `$ W+ [4 c) d% f' e ) 2 f J. u, @( L0 a( J (tcn): Sequential( P" l0 n0 ~0 h1 L% p
(0): BatchNorm2d(3, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 6 K5 p$ E9 B. u; D" \ (1): ReLU(inplace=True) ; ~; y* N6 R; m- W- H (2): Conv2d(3, 3, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) # L6 U; a- f4 i- O (3): Identity() 6 B. t D" [) W# H% |; e, e: Y (4): Dropout(p=0.3, inplace=True)1 b1 O4 R9 Q0 q, d7 W3 i6 Y
): M+ l: y# u- C# ~" `
) ; K: l# y7 \" H8 z/ ^5 i6 }; ?- U$ Y (st_gcn_dec): ModuleList(0 X6 S2 ?* f$ _% {0 ~
(0): Upsample(scale_factor=(3.0, 1.0), mode=bilinear); u( ~) j* @5 h, O, q: U5 S
(1): ConvBlock($ F& ?- n9 A I" C5 R ~6 {* D
(act): ReLU(inplace=True) + S# Q' D3 U; q0 O9 O) D (gcn): PyGeoConv( ; V0 P. q% e3 B$ N (g_conv): SAGC( P$ l1 Y4 f, h (conv_a): ModuleList(+ I# L3 b4 h' t) j
(0): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1)) ~2 _- r5 ]+ k" ~( i5 n (1): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1)) H, B+ X. H2 P% \) h (2): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1))( q5 J0 w y- I* J
)9 | h8 i6 T: \
(conv_b): ModuleList( ' N0 r ~" ?) l! \8 [' v, E7 C (0): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1))- M& Y0 v& v* o
(1): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1))( x: z2 g% |; e5 l# \8 W- U
(2): Conv2d(32, 16, kernel_size=(1, 1), stride=(1, 1))" X7 F. A' \& f# V' [" O6 r4 }
)5 \3 Q9 V/ f2 G7 [# I( Z
(gconv): ModuleList(. b3 N0 b& a4 z2 H$ h6 I
(0): GraphConvBR(" J7 b7 j. i4 [
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True); U5 y5 y e9 o. p/ H! N
(act): ReLU(inplace=True) 1 C) f$ n+ C: x: E4 Y ); A4 v8 O9 L# W( v& D! w
(1): GraphConvBR(2 i d. M/ i9 L! e, N
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)" c" \) a* E. s' O7 F% B5 ?" W+ f4 H: a
(act): ReLU(inplace=True)1 d, A5 _* D4 Y' a' k4 \1 J
) % p8 [, D( r) H+ ]( Z8 b (2): GraphConvBR() ]# o* f* z) R
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)$ G* Y: D& c5 T$ X! Z& Q: M
(act): ReLU(inplace=True) * W; O1 k+ r7 b# G' ^; \ ) % T$ T' s. ~% @* n ) ! u) I% q. X; J2 A (down): Sequential(+ `) b* l5 c4 d
(0): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))& o" A4 z( r. C- Q! b. |
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)) \5 t) m) X. D( T4 n
)) g1 L$ C6 v7 m: R8 z2 \
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 1 M8 Y% q$ S) u y6 A (soft): Softmax(dim=-2) 7 {# M `7 k+ Y: h" z# F (relu): CELU(alpha=0.01), ]) s+ n& ?( N# w, i0 H
(expanding_conv): Conv2d(32, 576, kernel_size=(1, 1), stride=(1, 1), bias=False)3 S! y% G, M- d( W2 G
(reduction_conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)( [$ a/ @: i) h4 ^
)# v0 `, K: \8 m2 O! F( o
) + z v; t; L0 \4 k (tcn): Sequential( x% {2 ]1 i# v E! x" ^0 }5 d
(0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)3 O: k, u- V5 o& ?2 _
(1): ReLU(inplace=True) & d9 a: A1 p: h8 B1 y$ y (2): Conv2d(64, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) ' j n$ J6 ]2 V( P( ?1 v5 E$ w (3): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)4 s+ C( P% w2 q2 Y. l! Y
(4): Dropout(p=0, inplace=True) - {& A' I+ U0 { )0 C% A" Q/ \+ ]4 L- s
(residual): Sequential( ! O) @( @, B- O a (0): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1))% L: D, ]9 s* v
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True), q2 _. D9 j- }- L1 o
)1 K l: w: K' G/ X# E- x: A6 L* u
)4 h; P, e; W- A F0 |7 p
(2): ConvBlock( / O) I/ {2 o" G2 y9 E (act): ReLU(inplace=True)& r: p6 W Q' {
(gcn): PyGeoConv(4 V# r& ~ k2 i7 O* i4 Z
(g_conv): SAGC(5 {, `! n; \, T' m9 r) C: K3 V% _
(conv_a): ModuleList() a2 D. n& I- j! L
(0): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1))) M) P7 ~5 m8 @8 f- p3 \
(1): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) 0 r7 z& P0 K& W% D1 _ (2): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1))4 E; H- {6 `9 j; b& W+ y. P
)6 H1 ~) d! w' K, E
(conv_b): ModuleList( : s' T# d* A6 _ (0): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)); v" G0 w3 \* x
(1): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) / H+ ^# y$ P0 R6 E (2): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1)) . a3 D) r7 x& R )- s B% Z, s H3 \0 F% w
(gconv): ModuleList(6 C* X- o8 f) A$ M9 C+ }3 ]
(0): GraphConvBR(8 v% ?# t1 r+ H0 A% o
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True). U! ~7 o$ |. P6 y3 p. Y( q
(act): ReLU(inplace=True)& L6 J& r: @! b3 a1 F# Q9 P, F5 s
) 3 H4 y0 z# v" v5 y" A0 g- X w) M" T; A (1): GraphConvBR( 0 H ~/ p' `+ _: Z& r; G (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ' H+ P G; n+ F6 b9 L3 o$ E (act): ReLU(inplace=True) - S/ \: d. _4 ~' d* \/ u" R ) - k9 v& m1 A' s5 x (2): GraphConvBR( ; {: E5 }. X* _2 _ b (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) # @* k4 W1 c( r# A4 J (act): ReLU(inplace=True) 1 P. Z4 M. p: e' t& H' U @ )' s& x- Z& S+ |
) ; y1 R; W: @; u (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True). Y2 p, B( t& r9 W# q( Z
(soft): Softmax(dim=-2) 6 P1 n* [; A% f$ o4 a" I (relu): CELU(alpha=0.01)% v; O1 D- E0 F5 K- ?+ |
(expanding_conv): Conv2d(64, 576, kernel_size=(1, 1), stride=(1, 1), bias=False)% l3 s8 f- V# F# ?6 Q# \
(reduction_conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False) 1 N$ I2 W' @8 M! j* Y. _ ) z3 O; I1 [1 r) C; M
) + w7 }7 V- `0 g$ P9 M- ~ x( V2 r$ o (tcn): Sequential( 7 R7 h+ G$ Z8 K (0): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)& b0 O1 s, L& w& \0 r
(1): ReLU(inplace=True)+ \5 q. ?9 e& w( w+ o- r) T
(2): Conv2d(64, 64, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) & I; l% O( I+ v: F# K' @ (3): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 9 @/ }- Q. ^) ~ (4): Dropout(p=0, inplace=True) ! n/ @+ Y/ ]3 h. E4 ?. m5 k ) / E9 a0 ` ?+ [# a0 \; Q* p% {5 | ) ( Z. |1 I Z( r. G2 |. h1 F (3): ConvBlock(! B' B. d9 u6 V
(act): ReLU(inplace=True)5 D: A9 E3 `1 [
(gcn): PyGeoConv(8 O: R: \7 Z) p4 Z! C. k7 e E! ]
(g_conv): SAGC(/ ^! T1 }. z7 }% E
(conv_a): ModuleList( 1 X7 \- |9 |3 h (0): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1))% |7 a, Y1 [' I# M
(1): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1)) ( R7 W r. s" @ D3 r6 | (2): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1))$ B4 B! H2 r; l; ]' S6 H
)5 l0 x: F& U# a4 b7 R( C( ?9 V
(conv_b): ModuleList( 9 z' U' N4 r, e (0): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1))# Q- M. A4 V6 ?$ O
(1): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1)) # G0 p$ N5 F) E. A (2): Conv2d(64, 12, kernel_size=(1, 1), stride=(1, 1)) ' }7 q$ e1 e: I' E+ k# \9 K) O ) , o3 j% v2 _9 y+ R8 { (gconv): ModuleList( : \* h: b' M5 \% n (0): GraphConvBR( - U8 ?1 z1 o" F1 k (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 7 E+ Q: \0 L& {$ ?" G5 ~$ e (act): ReLU(inplace=True), ?, l' L' ~+ Q1 D+ w: B) F
)) g3 P; A: l" \0 [ r# ^
(1): GraphConvBR( " ?& a$ J2 ?. G) ?( p0 C! r (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ; u0 g: Y, o ?: W+ J5 S (act): ReLU(inplace=True)( \& G8 J9 ^: {, s9 v
) 7 w( \, P9 j9 R# _ L- F) k (2): GraphConvBR(8 @( H. z0 M+ }! u- M
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)0 w% w/ l* p) P9 N8 s9 }9 z
(act): ReLU(inplace=True)5 _! _$ f5 @& A& T! s' G
) $ c# N5 G, O! G ) , o$ N4 f# @( Y$ u& o$ l (down): Sequential( 2 e2 I6 b. k# h- m5 B1 g (0): Conv2d(64, 48, kernel_size=(1, 1), stride=(1, 1))7 V/ v3 T) Q, e" {7 L
(1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)* N+ X2 q7 S; D. }
) ; O7 O$ p' N) C: Q: w. d. } (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)8 M4 x6 Z( Q+ g6 A
(soft): Softmax(dim=-2)& O' W! B a) P. ?5 ^/ G
(relu): CELU(alpha=0.01)6 ^& Q3 M1 o/ m0 D+ a; \
(expanding_conv): Conv2d(64, 432, kernel_size=(1, 1), stride=(1, 1), bias=False); u+ W/ b; @5 d$ l
(reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False) 3 h/ s8 R, I. A$ h ) u3 `' Q1 R9 n1 e$ o ); D! N, I1 t: [1 E/ e
(tcn): Sequential( 3 Z( u2 ~( l& V! N4 o$ I1 e O% Q (0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) - [% e; |7 e& M7 Y$ R. d (1): ReLU(inplace=True)0 y8 B8 N# J) }3 J/ n
(2): Conv2d(48, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0))# i* W4 ]( q$ V4 z n1 m8 {! ^
(3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 1 _% j- a7 `9 Z/ p (4): Dropout(p=0, inplace=True) 4 \# ]! Z) s. J! n' Y ) " |3 h. {9 Q5 Q. o9 u, w' x (residual): Sequential( - v# Z3 F9 L8 Y+ c* f, N (0): Conv2d(64, 48, kernel_size=(1, 1), stride=(1, 1)) 3 d" t+ o' \5 q2 B2 h( C (1): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 9 C* }; i9 T ?4 z ) $ ~# k8 \/ e- s5 s( D: i9 n( G0 f. f) t ); F* v: j* n0 h$ w* t5 o
(4): Upsample(scale_factor=(2.0, 1.0), mode=bilinear)" v. H8 Y# Z! W+ y' Z
(5): ConvBlock( ! X: z1 W& x; [% s (act): ReLU(inplace=True)9 K1 A4 R7 p1 B$ V/ f
(gcn): PyGeoConv( 3 d* J' y% [3 x0 C N (g_conv): SAGC(& B" ?! v2 q, ` N. ?: a
(conv_a): ModuleList( ) D1 o. p" m# W4 i (0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))5 t5 K. O1 I* H8 y# \# g: C
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))1 p: _) O( _- Q
(2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))- Y/ b0 [9 a+ O* n& ]+ \
) - v" M8 s9 ?3 w; Q; y (conv_b): ModuleList( $ w6 H' s n0 Q5 ]' K9 t (0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)). x: _' q5 a' z$ n- X& H
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) ; A$ F. [' I6 x3 I% g3 b (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) / Y: m2 N# E# v' m. T' |6 m ) " N9 O8 @" L* Q& S8 C$ `; x/ m (gconv): ModuleList(1 A O# q; n# W( j
(0): GraphConvBR($ w) S" X' G; E E4 @- m
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)0 ^- A# D o% a R/ ?( m' y3 o
(act): ReLU(inplace=True)7 X7 [ m) b I! } \% c# `2 u& o
)5 Z8 l+ b6 f4 k1 Q2 K
(1): GraphConvBR(; @6 `5 w3 u# e1 W9 B
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)6 n, g! w9 M6 p( l" I2 L2 A
(act): ReLU(inplace=True)) @/ o8 ^) q0 _. ?
) " S5 _' n$ y/ h! A (2): GraphConvBR(, F6 k# f6 d# A5 e
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) O/ M# Q* z- H9 h (act): ReLU(inplace=True); v' J( w, L' s; q7 @- U3 O
)8 A$ o% `0 z8 l( `* ]9 |1 j8 g
)6 G) S1 E h1 C0 v8 _ Z) {9 }0 o
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + g& o& ]* h4 x3 \$ R& J/ N1 P (soft): Softmax(dim=-2) 9 y( V5 B: Y2 c8 g (relu): CELU(alpha=0.01) ) B4 Z. F2 T7 q& R: I0 \, l (expanding_conv): Conv2d(48, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)0 J; E* i# M7 |: t# R
(reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False)4 j4 B" f; _8 h6 t, `+ \
)9 I/ ^ {; V X, b H1 g0 p5 K% Z
) ; ^) Y, y! J* Y; {6 ]6 }' z1 y (tcn): Sequential(' ~3 q$ X) {# L7 L. x2 d
(0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 0 v+ B" b' P; m( s G" K (1): ReLU(inplace=True) 0 W4 ^! M; {: j9 m0 a* b (2): Conv2d(48, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0))" x# k2 W& f! ?8 z
(3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)2 m1 G! L. g: ]0 q, c; w$ A3 H
(4): Dropout(p=0, inplace=True)0 K7 y% i- o8 W
)2 b% O- l* o3 `" L6 Y3 P/ N
) 6 |( R, r! R& u4 s1 i (6): ConvBlock( 7 L c$ O* }! V) R, ^ (act): ReLU(inplace=True)' \* J6 T$ ~/ S3 _+ V- K l
(gcn): PyGeoConv( $ i+ V8 o4 k X# N) R: o% y: z (g_conv): SAGC(/ b) c. C) a% ` W- |1 z
(conv_a): ModuleList(; I2 s8 \$ A n4 a$ ]
(0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))) M" B3 L: X& V% K7 n
(1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) ; k6 ?8 J; M# h3 u6 e5 ^( H2 } (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1))7 C8 k/ A8 U' j" O/ K [1 q
) , A6 l8 c) g! M$ k# g2 w (conv_b): ModuleList(8 R8 W$ H- z! E( k9 r4 I
(0): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) ( S$ t/ I0 T3 b+ R9 J (1): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) % C5 X" v' }6 V& X7 [ (2): Conv2d(48, 12, kernel_size=(1, 1), stride=(1, 1)) / ~3 |" k* S" y- J ) , K6 I4 \6 ?! H' z (gconv): ModuleList(5 B% ^+ O0 g' N }/ H
(0): GraphConvBR(7 s; }: o! k" Y+ o2 g5 c
(bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True), s9 y y* H( w) e1 @* Z
(act): ReLU(inplace=True)/ {( k7 _/ i) _7 B$ e* l
). x; l1 l1 E& `! j3 }" r& c9 V7 O; p
(1): GraphConvBR( 8 d$ w+ v. f7 R0 m& X (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 5 C: _/ `' ]# w2 C# u$ b1 c& r+ \ (act): ReLU(inplace=True) 8 m% C5 V8 t5 Z, h. G& F# Q )# N% ]. c* ~4 W3 l0 D, v: C
(2): GraphConvBR( 1 |: i$ W' s% J (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)2 D: |8 n5 I. [ g' {6 x
(act): ReLU(inplace=True)7 w1 J) I$ t. P& ~; o( M+ y
) 0 _% D. j, }2 r/ h ) : }$ i6 {& I, e6 l, I2 D (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)) H4 N, ~( w( H8 O: g/ R; t% D j
(soft): Softmax(dim=-2) ( P& B1 M0 A h0 A- A (relu): CELU(alpha=0.01): @* q2 b2 @( R7 ?. x+ M# k. C5 n
(expanding_conv): Conv2d(48, 432, kernel_size=(1, 1), stride=(1, 1), bias=False) " _- q x) l' w7 a; s) n (reduction_conv): Conv2d(144, 48, kernel_size=(1, 1), stride=(1, 1), bias=False) ! b5 t) O8 {6 I' k1 @( p0 `2 B )) F2 t. ^* e1 g' Q
) , V# x$ x7 H2 s$ X2 D (tcn): Sequential(& I: [- ^: I: l; S, N
(0): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 4 e7 V3 a( z6 u9 ^5 a) f (1): ReLU(inplace=True) W6 ~6 B7 g2 m& m. a+ v
(2): Conv2d(48, 48, kernel_size=(9, 1), stride=(1, 1), padding=(4, 0)) ( r9 S4 ?6 I9 s& Z (3): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)( J7 q N9 ^( {9 f% N
(4): Dropout(p=0, inplace=True) ' N8 X- v' W% I ) N2 ~ {7 E3 F& x$ R ) 8 }. @2 x) Y4 g, G4 D ) ' C* [7 _$ }* ]6 L( M$ n2 ~% B8 O p )# {& F9 p% }8 H: Y3 A2 o
)2 ^; P9 x# s6 o, m
————————————————! W Y8 M1 o7 ? X; a: K4 U
版权声明:本文为CSDN博主「FakeOccupational」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 ) _: D) u% |; R" `: P& A# q! I原文链接:https://blog.csdn.net/ResumeProject/article/details/1266784966 z% |) F; V. _) C* k
$ m$ ]; Z/ _# K2 P
$ ?. f! K. c" q" M3 u