{"action":"created","issue":{"url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/2","repository_url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch","labels_url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/2/comments","events_url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/2/events","html_url":"https://github.com/kevin-kaixu/grass_pytorch/issues/2","id":360286799,"node_id":"MDU6SXNzdWUzNjAyODY3OTk=","number":2,"title":"Operational mismatch between the paper and the given code. ","user":{"login":"BardOfCodes","id":3109345,"node_id":"MDQ6VXNlcjMxMDkzNDU=","avatar_url":"https://avatars0.githubusercontent.com/u/3109345?v=4","gravatar_id":"","url":"https://api.github.com/users/BardOfCodes","html_url":"https://github.com/BardOfCodes","followers_url":"https://api.github.com/users/BardOfCodes/followers","following_url":"https://api.github.com/users/BardOfCodes/following{/other_user}","gists_url":"https://api.github.com/users/BardOfCodes/gists{/gist_id}","starred_url":"https://api.github.com/users/BardOfCodes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BardOfCodes/subscriptions","organizations_url":"https://api.github.com/users/BardOfCodes/orgs","repos_url":"https://api.github.com/users/BardOfCodes/repos","events_url":"https://api.github.com/users/BardOfCodes/events{/privacy}","received_events_url":"https://api.github.com/users/BardOfCodes/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-09-14T12:35:57Z","updated_at":"2018-09-14T15:56:54Z","closed_at":"2018-09-14T15:56:54Z","author_association":"NONE","body":"For example: \r\nThe Encoder in the given code repository:\r\n ```\r\nclass AdjEncoder(nn.Module):\r\n\r\n    def __init__(self, feature_size, hidden_size):\r\n        super(AdjEncoder, self).__init__()\r\n        self.left = nn.Linear(feature_size, hidden_size)\r\n        self.right = nn.Linear(feature_size, hidden_size, bias=False)\r\n        self.second = nn.Linear(hidden_size, feature_size)\r\n        self.tanh = nn.Tanh()\r\n\r\n    def forward(self, left_input, right_input):\r\n        output = self.left(left_input)\r\n        output += self.right(right_input)\r\n        output = self.tanh(output)\r\n        output = self.second(output)\r\n        output = self.tanh(output)\r\n        return output\r\n```\r\nThis set of instructions imply that to find the encoding of the parent:\r\n1) Both the children are first processed independently.\r\n2) The **summation** of these two children is then processed for getting the parent feature.\r\n\r\nThis is quite different from the procedure outlined in the paper: \r\n![image](https://user-images.githubusercontent.com/3109345/45550384-4c2d6680-b848-11e8-9fca-45a9303af199.png)\r\n\r\nWhere basically,\r\n1) Both the children are concatenated into one vector.\r\n2) A Linear Layer of size **2L** then takes the concatenated vector as input, and outputs the parent feature.\r\n\r\nAlthough in a end-to-end training, the formulation in this repository may also work, the procedure in the paper seems more intuitive.\r\n\r\nTo the best of my knowledge, this seems to be a flaw. It would be useful to know the reasons for the formulation used in this repository.\r\n\r\n  "},"comment":{"url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/comments/421403621","html_url":"https://github.com/kevin-kaixu/grass_pytorch/issues/2#issuecomment-421403621","issue_url":"https://api.github.com/repos/kevin-kaixu/grass_pytorch/issues/2","id":421403621,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMTQwMzYyMQ==","user":{"login":"BardOfCodes","id":3109345,"node_id":"MDQ6VXNlcjMxMDkzNDU=","avatar_url":"https://avatars0.githubusercontent.com/u/3109345?v=4","gravatar_id":"","url":"https://api.github.com/users/BardOfCodes","html_url":"https://github.com/BardOfCodes","followers_url":"https://api.github.com/users/BardOfCodes/followers","following_url":"https://api.github.com/users/BardOfCodes/following{/other_user}","gists_url":"https://api.github.com/users/BardOfCodes/gists{/gist_id}","starred_url":"https://api.github.com/users/BardOfCodes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BardOfCodes/subscriptions","organizations_url":"https://api.github.com/users/BardOfCodes/orgs","repos_url":"https://api.github.com/users/BardOfCodes/repos","events_url":"https://api.github.com/users/BardOfCodes/events{/privacy}","received_events_url":"https://api.github.com/users/BardOfCodes/received_events","type":"User","site_admin":false},"created_at":"2018-09-14T15:56:54Z","updated_at":"2018-09-14T15:56:54Z","author_association":"NONE","body":"Yes that makes sense. \r\n\r\nI was thinking of it the weight matrix to be of `2n x 2n` rather than `2n x n`. With `2n x 2n` we would be missing out on half the relations if we implement it in terms of  2 weight matrix of `n x n`. \r\nBut as you pointed out, its rather a relation `2n x n`, and hence it can be written separately without any issue. \r\n\r\nThanks for pointing this out @junli-lj !\r\n"}}
{"actor":{"display_login":"BardOfCodes"}}