1+ <!DOCTYPE html>
2+ < html class ="writer-html5 " lang ="en " >
3+ < head >
4+ < meta charset ="utf-8 " />
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
6+ < title > easygraph.model.hypergraphs.hwnn — EasyGraph 1.4.1</ title >
7+ < link rel ="stylesheet " href ="../../../../_static/pygments.css " type ="text/css " />
8+ < link rel ="stylesheet " href ="../../../../_static/css/theme.css " type ="text/css " />
9+ < link rel ="stylesheet " href ="../../../../_static/my_theme.css " type ="text/css " />
10+ <!--[if lt IE 9]>
11+ <script src="../../../../_static/js/html5shiv.min.js"></script>
12+ <![endif]-->
13+
14+ < script src ="../../../../_static/jquery.js "> </ script >
15+ < script src ="../../../../_static/_sphinx_javascript_frameworks_compat.js "> </ script >
16+ < script data-url_root ="../../../../ " id ="documentation_options " src ="../../../../_static/documentation_options.js "> </ script >
17+ < script src ="../../../../_static/doctools.js "> </ script >
18+ < script src ="../../../../_static/sphinx_highlight.js "> </ script >
19+ < script src ="../../../../_static/copybutton.js "> </ script >
20+ < script src ="../../../../_static/js/theme.js "> </ script >
21+ < link rel ="index " title ="Index " href ="../../../../genindex.html " />
22+ < link rel ="search " title ="Search " href ="../../../../search.html " />
23+ </ head >
24+
25+ < body class ="wy-body-for-nav ">
26+ < div class ="wy-grid-for-nav ">
27+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
28+ < div class ="wy-side-scroll ">
29+ < div class ="wy-side-nav-search " style ="background: white " >
30+
31+
32+
33+ < a href ="../../../../index.html " class ="icon icon-home ">
34+ EasyGraph
35+ < img src ="../../../../_static/logo.png " class ="logo " alt ="Logo "/>
36+ </ a >
37+ < div role ="search ">
38+ < form id ="rtd-search-form " class ="wy-form " action ="../../../../search.html " method ="get ">
39+ < input type ="text " name ="q " placeholder ="Search docs " aria-label ="Search docs " />
40+ < input type ="hidden " name ="check_keywords " value ="yes " />
41+ < input type ="hidden " name ="area " value ="default " />
42+ </ form >
43+ </ div >
44+ </ div > < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="Navigation menu ">
45+ < p class ="caption " role ="heading "> < span class ="caption-text "> Contents:</ span > </ p >
46+ < ul >
47+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../install.html "> Installation</ a > </ li >
48+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../example.html "> Examples of Graph Analysis</ a > </ li >
49+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../hypergraph.html "> EasyHypergraph</ a > </ li >
50+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../reference.html "> Reference</ a > </ li >
51+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../tutorial.html "> Tutorial</ a > </ li >
52+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../contributorGuide.html "> Contributor Guide</ a > </ li >
53+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../license.html "> License</ a > </ li >
54+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../sourcecode.html "> Source Code</ a > </ li >
55+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../honors.html "> Honors</ a > </ li >
56+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../dev.html "> Developer Documentation</ a > </ li >
57+ </ ul >
58+
59+ </ div >
60+ </ div >
61+ </ nav >
62+
63+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap "> < nav class ="wy-nav-top " aria-label ="Mobile navigation menu " style ="background: white " >
64+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
65+ < a href ="../../../../index.html "> EasyGraph</ a >
66+ </ nav >
67+
68+ < div class ="wy-nav-content ">
69+ < div class ="rst-content ">
70+ < div role ="navigation " aria-label ="Page navigation ">
71+ < ul class ="wy-breadcrumbs ">
72+ < li > < a href ="../../../../index.html " class ="icon icon-home " aria-label ="Home "> </ a > </ li >
73+ < li class ="breadcrumb-item "> < a href ="../../../index.html "> Module code</ a > </ li >
74+ < li class ="breadcrumb-item active "> easygraph.model.hypergraphs.hwnn</ li >
75+ < li class ="wy-breadcrumbs-aside ">
76+ </ li >
77+ </ ul >
78+ < hr />
79+ </ div >
80+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
81+ < div itemprop ="articleBody ">
82+
83+ < h1 > Source code for easygraph.model.hypergraphs.hwnn</ h1 > < div class ="highlight "> < pre >
84+ < span > </ span > < span class ="kn "> import</ span > < span class ="nn "> torch</ span >
85+ < span class ="kn "> import</ span > < span class ="nn "> torch.nn</ span > < span class ="k "> as</ span > < span class ="nn "> nn</ span >
86+ < span class ="kn "> import</ span > < span class ="nn "> torch.nn.functional</ span > < span class ="k "> as</ span > < span class ="nn "> F</ span >
87+
88+ < span class ="kn "> from</ span > < span class ="nn "> easygraph.nn</ span > < span class ="kn "> import</ span > < span class ="n "> HWNNConv</ span >
89+
90+
91+ < div class ="viewcode-block " id ="HWNN "> < a class ="viewcode-back " href ="../../../../reference/easygraph.model.hypergraphs.hwnn.html#easygraph.model.hypergraphs.hwnn.HWNN "> [docs]</ a > < span class ="k "> class</ span > < span class ="nc "> HWNN</ span > < span class ="p "> (</ span > < span class ="n "> nn</ span > < span class ="o "> .</ span > < span class ="n "> Module</ span > < span class ="p "> ):</ span >
92+ < span class ="w "> </ span > < span class ="sa "> r</ span > < span class ="sd "> """The HGNN model proposed in `Hypergraph Neural Networks <https://arxiv.org/pdf/1809.09401>`_ paper (AAAI 2019).</ span >
93+
94+ < span class ="sd "> Parameters:</ span >
95+ < span class ="sd "> ``in_channels`` (``int``): :math:`C_{in}` is the number of input channels.</ span >
96+ < span class ="sd "> ``hid_channels`` (``int``): :math:`C_{hid}` is the number of hidden channels.</ span >
97+ < span class ="sd "> ``num_classes`` (``int``): The Number of class of the classification task.</ span >
98+ < span class ="sd "> ``ncount`` (``int``): The Number of node in the hypergraph.</ span >
99+ < span class ="sd "> ``hyper_snapshot_num`` (``int``): The Number of snapshots splited from hypergraph.</ span >
100+ < span class ="sd "> ``drop_rate`` (``float``, optional): Dropout ratio. Defaults to 0.5.</ span >
101+ < span class ="sd "> """</ span >
102+
103+ < span class ="k "> def</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span >
104+ < span class ="bp "> self</ span > < span class ="p "> ,</ span >
105+ < span class ="n "> in_channels</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="p "> ,</ span >
106+ < span class ="n "> num_classes</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="p "> ,</ span >
107+ < span class ="n "> ncount</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="p "> ,</ span >
108+ < span class ="n "> hyper_snapshot_num</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span >
109+ < span class ="n "> hid_channels</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="o "> =</ span > < span class ="mi "> 128</ span > < span class ="p "> ,</ span >
110+ < span class ="n "> drop_rate</ span > < span class ="p "> :</ span > < span class ="nb "> float</ span > < span class ="o "> =</ span > < span class ="mf "> 0.01</ span > < span class ="p "> ,</ span >
111+ < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
112+ < span class ="nb "> super</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="fm "> __init__</ span > < span class ="p "> ()</ span >
113+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> drop_rate</ span > < span class ="o "> =</ span > < span class ="n "> drop_rate</ span >
114+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> convolution_1</ span > < span class ="o "> =</ span > < span class ="n "> HWNNConv</ span > < span class ="p "> (</ span >
115+ < span class ="n "> in_channels</ span > < span class ="p "> ,</ span > < span class ="n "> hid_channels</ span > < span class ="p "> ,</ span > < span class ="n "> ncount</ span > < span class ="p "> ,</ span > < span class ="n "> K1</ span > < span class ="o "> =</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="n "> K2</ span > < span class ="o "> =</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="n "> approx</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span >
116+ < span class ="p "> )</ span >
117+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> convolution_2</ span > < span class ="o "> =</ span > < span class ="n "> HWNNConv</ span > < span class ="p "> (</ span >
118+ < span class ="n "> hid_channels</ span > < span class ="p "> ,</ span > < span class ="n "> num_classes</ span > < span class ="p "> ,</ span > < span class ="n "> ncount</ span > < span class ="p "> ,</ span > < span class ="n "> K1</ span > < span class ="o "> =</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="n "> K2</ span > < span class ="o "> =</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="n "> approx</ span > < span class ="o "> =</ span > < span class ="kc "> True</ span >
119+ < span class ="p "> )</ span >
120+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> par</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> nn</ span > < span class ="o "> .</ span > < span class ="n "> Parameter</ span > < span class ="p "> (</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> Tensor</ span > < span class ="p "> (</ span > < span class ="n "> hyper_snapshot_num</ span > < span class ="p "> ))</ span >
121+ < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> nn</ span > < span class ="o "> .</ span > < span class ="n "> init</ span > < span class ="o "> .</ span > < span class ="n "> uniform_</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> par</ span > < span class ="p "> ,</ span > < span class ="mi "> 0</ span > < span class ="p "> ,</ span > < span class ="mf "> 0.99</ span > < span class ="p "> )</ span >
122+
123+ < div class ="viewcode-block " id ="HWNN.forward "> < a class ="viewcode-back " href ="../../../../reference/easygraph.model.hypergraphs.hwnn.html#easygraph.model.hypergraphs.hwnn.HWNN.forward "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> forward</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> X</ span > < span class ="p "> :</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> Tensor</ span > < span class ="p "> ,</ span > < span class ="n "> hgs</ span > < span class ="p "> :</ span > < span class ="nb "> list</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> Tensor</ span > < span class ="p "> :</ span >
124+ < span class ="w "> </ span > < span class ="sa "> r</ span > < span class ="sd "> """The forward function.</ span >
125+ < span class ="sd "> Parameters:</ span >
126+ < span class ="sd "> ``X`` (``torch.Tensor``): Input vertex feature matrix. Size :math:`(N, C_{in})`.</ span >
127+ < span class ="sd "> ``hg`` (``eg.Hypergraph``): The hypergraph structure that contains :math:`N` vertices.</ span >
128+ < span class ="sd "> ``hgs`` (``list`` of ``Hypergraph``): A list of hypergraph structures whcih stands for snapshots.</ span >
129+ < span class ="sd "> """</ span >
130+ < span class ="n "> channel</ span > < span class ="o "> =</ span > < span class ="p "> []</ span >
131+ < span class ="n "> hyper_snapshot_num</ span > < span class ="o "> =</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> hgs</ span > < span class ="p "> )</ span >
132+ < span class ="k "> for</ span > < span class ="n "> snap_index</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="n "> hyper_snapshot_num</ span > < span class ="p "> ):</ span >
133+ < span class ="n "> hg</ span > < span class ="o "> =</ span > < span class ="n "> hgs</ span > < span class ="p "> [</ span > < span class ="n "> snap_index</ span > < span class ="p "> ]</ span >
134+ < span class ="n "> Y</ span > < span class ="o "> =</ span > < span class ="n "> F</ span > < span class ="o "> .</ span > < span class ="n "> relu</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> convolution_1</ span > < span class ="p "> (</ span > < span class ="n "> X</ span > < span class ="p "> ,</ span > < span class ="n "> hg</ span > < span class ="p "> ))</ span >
135+ < span class ="n "> Y</ span > < span class ="o "> =</ span > < span class ="n "> F</ span > < span class ="o "> .</ span > < span class ="n "> dropout</ span > < span class ="p "> (</ span > < span class ="n "> Y</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> drop_rate</ span > < span class ="p "> )</ span >
136+ < span class ="n "> Y</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> convolution_2</ span > < span class ="p "> (</ span > < span class ="n "> Y</ span > < span class ="p "> ,</ span > < span class ="n "> hg</ span > < span class ="p "> )</ span >
137+ < span class ="n "> Y</ span > < span class ="o "> =</ span > < span class ="n "> F</ span > < span class ="o "> .</ span > < span class ="n "> log_softmax</ span > < span class ="p "> (</ span > < span class ="n "> Y</ span > < span class ="p "> ,</ span > < span class ="n "> dim</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
138+ < span class ="n "> channel</ span > < span class ="o "> .</ span > < span class ="n "> append</ span > < span class ="p "> (</ span > < span class ="n "> Y</ span > < span class ="p "> )</ span >
139+ < span class ="n "> X</ span > < span class ="o "> =</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> zeros_like</ span > < span class ="p "> (</ span > < span class ="n "> channel</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ])</ span >
140+ < span class ="k "> for</ span > < span class ="n "> ind</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="n "> hyper_snapshot_num</ span > < span class ="p "> ):</ span >
141+ < span class ="n "> X</ span > < span class ="o "> =</ span > < span class ="n "> X</ span > < span class ="o "> +</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> par</ span > < span class ="p "> [</ span > < span class ="n "> ind</ span > < span class ="p "> ]</ span > < span class ="o "> *</ span > < span class ="n "> channel</ span > < span class ="p "> [</ span > < span class ="n "> ind</ span > < span class ="p "> ]</ span >
142+ < span class ="k "> return</ span > < span class ="n "> X</ span > </ div > </ div >
143+ </ pre > </ div >
144+
145+ </ div >
146+ </ div >
147+ < footer >
148+
149+ < hr />
150+
151+ < div role ="contentinfo ">
152+ < p > © Copyright 2020-2025, DataNET Group, Fudan University.</ p >
153+ </ div >
154+
155+ Built with < a href ="https://www.sphinx-doc.org/ "> Sphinx</ a > using a
156+ < a href ="https://github.com/readthedocs/sphinx_rtd_theme "> theme</ a >
157+ provided by < a href ="https://readthedocs.org "> Read the Docs</ a > .
158+
159+
160+ </ footer >
161+ </ div >
162+ </ div >
163+ </ section >
164+ </ div >
165+ < script >
166+ jQuery ( function ( ) {
167+ SphinxRtdTheme . Navigation . enable ( true ) ;
168+ } ) ;
169+ </ script >
170+
171+ </ body >
172+ </ html >
0 commit comments