Skip to content

how can I define the 3 #MGCN layers for YAGO as described in table 8 of paper? Bug in MGCN.py? #5

@JuliaGast

Description

@JuliaGast

Dear All,

in table 8 of the paper you describe that for YAGO you set # MGCN layer =3.

As far as I understand, this can be set by the arg core_layer, correct?

However, in the code, when I look at MGCN.py, as far as I understand, the MGCN will not deal with more than two layers (please see lines with comments titled #HERE below:):

		# define MGCN Layer
		self.conv1 = MGCNConvLayer(self.p.initsize, self.p.hidsize, act=self.act, params=self.p)
		self.conv2 = MGCNConvLayer(self.p.hidsize, self.p.embsize, act=self.act, params=self.p) if self.p.core_layer == 2 else None #HERE


		self.register_parameter('bias', Parameter(torch.zeros(num_e)))

	def set_graph(self, edge_index, edge_type):
		self.edge_index = edge_index
		self.edge_type = edge_type

	def set_jumpfunc(self, edge_id_jump, edge_w_jump, jumpfunc, jumpw=None, skip=False, rel_jump=None):
		self.edge_id_jump = edge_id_jump
		self.edge_w_jump = edge_w_jump
		self.jump = jumpfunc
		self.jump_weight = jumpw
		self.skip = skip
		self.rel_jump = rel_jump

	def forward(self, t, emb):
		self.nfe += 1
		jump_emb = emb.clone()
		if self.p.res:
			emb = emb + self.res * self.conv1(emb, self.edge_index, self.edge_type, self.num_e)
			emb = self.drop_l1(emb)
			**emb = (emb + self.res * self.conv2(emb, self.edge_index, self.edge_type, self.num_e)) if self.p.core_layer == 2 else #HERE
 emb**
			**emb = self.drop_l2(emb) if self.p.core_layer == 2 else emb** #HERE

		else:
			emb	= self.conv1(emb, self.edge_index, self.edge_type, self.num_e)
			emb	= self.drop_l1(emb)
			**emb	= self.conv2(emb, self.edge_index, self.edge_type, self.num_e) 	if self.p.core_layer == 2 else emb** #HERE
			**emb	= self.drop_l2(emb) 							if self.p.core_layer == 2 else emb** #HERE

This means, if self.p.core_layer is 3, thus != 2, it will treat this as one layer. Is my understanding correct or am I mistaken?

If I'm correct: Does this mean, that the hyperparameter for YAGO should actually be core_layer=1?

Best and Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions