{"action":"created","issue":{"url":"https://api.github.com/repos/Lasagne/Lasagne/issues/200","labels_url":"https://api.github.com/repos/Lasagne/Lasagne/issues/200/labels{/name}","comments_url":"https://api.github.com/repos/Lasagne/Lasagne/issues/200/comments","events_url":"https://api.github.com/repos/Lasagne/Lasagne/issues/200/events","html_url":"https://github.com/Lasagne/Lasagne/issues/200","id":67140483,"number":200,"title":"Rename MultipleInputsLayer","user":{"login":"f0k","id":629706,"avatar_url":"https://avatars.githubusercontent.com/u/629706?v=3","gravatar_id":"","url":"https://api.github.com/users/f0k","html_url":"https://github.com/f0k","followers_url":"https://api.github.com/users/f0k/followers","following_url":"https://api.github.com/users/f0k/following{/other_user}","gists_url":"https://api.github.com/users/f0k/gists{/gist_id}","starred_url":"https://api.github.com/users/f0k/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/f0k/subscriptions","organizations_url":"https://api.github.com/users/f0k/orgs","repos_url":"https://api.github.com/users/f0k/repos","events_url":"https://api.github.com/users/f0k/events{/privacy}","received_events_url":"https://api.github.com/users/f0k/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/Lasagne/Lasagne/milestones/1","html_url":"https://github.com/Lasagne/Lasagne/milestones/First%20release","labels_url":"https://api.github.com/repos/Lasagne/Lasagne/milestones/1/labels","id":908462,"number":1,"title":"First release","description":"Things to do for the first release.","creator":{"login":"benanne","id":43829,"avatar_url":"https://avatars.githubusercontent.com/u/43829?v=3","gravatar_id":"","url":"https://api.github.com/users/benanne","html_url":"https://github.com/benanne","followers_url":"https://api.github.com/users/benanne/followers","following_url":"https://api.github.com/users/benanne/following{/other_user}","gists_url":"https://api.github.com/users/benanne/gists{/gist_id}","starred_url":"https://api.github.com/users/benanne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benanne/subscriptions","organizations_url":"https://api.github.com/users/benanne/orgs","repos_url":"https://api.github.com/users/benanne/repos","events_url":"https://api.github.com/users/benanne/events{/privacy}","received_events_url":"https://api.github.com/users/benanne/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":12,"state":"open","created_at":"2014-12-18T15:32:21Z","updated_at":"2015-04-09T16:23:39Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2015-04-08T14:17:35Z","updated_at":"2015-04-09T17:14:04Z","closed_at":null,"body":"It has been noted a [few](https://github.com/benanne/Lasagne/issues/104#issuecomment-73141174) [times](https://groups.google.com/d/topic/lasagne-users/P_OakWeHwj0/discussion) that `MultipleInputsLayer` is easily mistaken to be related to `InputLayer`.\r\n\r\nOne possibility would be renaming it to `MultipleIncomingLayer`, since that reflects the keyword used to link layers to their incoming layers. This is not a whole lot better, though. `MultiLayer` could work, but might be a bit unspecific.\r\n\r\nAnother possibility is to focus on the aspect of taking multiple inputs and merging them in some way, as the class docstring acknowledges:\r\n```python\r\nclass MultipleInputsLayer(Layer):\r\n    \"\"\"\r\n    This class represents a layer that aggregates input from multiple layers.\r\n    It should be subclassed when implementing new types of layers that\r\n    obtain their input from multiple layers.\r\n    \"\"\"\r\n```\r\nAfter all, it allows multiple incoming layers, but always produces a single output, so it must do some kind of aggregation. Some ideas on this theme: `MergeLayer`, `MergingLayer`, `AggregateLayer`, `AggregationLayer`, `JoinLayer`, `JoiningLayer`, `CombinationLayer`, ...\r\n\r\nThis should be discussed and/or addressed before the first release."},"comment":{"url":"https://api.github.com/repos/Lasagne/Lasagne/issues/comments/91296046","html_url":"https://github.com/Lasagne/Lasagne/issues/200#issuecomment-91296046","issue_url":"https://api.github.com/repos/Lasagne/Lasagne/issues/200","id":91296046,"user":{"login":"f0k","id":629706,"avatar_url":"https://avatars.githubusercontent.com/u/629706?v=3","gravatar_id":"","url":"https://api.github.com/users/f0k","html_url":"https://github.com/f0k","followers_url":"https://api.github.com/users/f0k/followers","following_url":"https://api.github.com/users/f0k/following{/other_user}","gists_url":"https://api.github.com/users/f0k/gists{/gist_id}","starred_url":"https://api.github.com/users/f0k/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/f0k/subscriptions","organizations_url":"https://api.github.com/users/f0k/orgs","repos_url":"https://api.github.com/users/f0k/repos","events_url":"https://api.github.com/users/f0k/events{/privacy}","received_events_url":"https://api.github.com/users/f0k/received_events","type":"User","site_admin":false},"created_at":"2015-04-09T17:14:04Z","updated_at":"2015-04-09T17:14:04Z","body":"> Names of things are important but I feel we've been overemphasizing this aspect a little ;)\r\n\r\nI think base class names are pretty important, but we've found a few names that would probably do equally well. I'm fine with any of `MergeLayer`, `JoinLayer` and `CombineLayer`.\r\n\r\nI just noticed that we have `lasagne/layers/merge.py` for `ConcatLayer` and `ElemwiseSumLayer`, so we already figured out before that it was a good abstraction for those.\r\nIf we want to plan for a possible `lasagne/layers/compare.py` that does differences or something, we should go for `JoinLayer`. Otherwise we should go for `MergeLayer` to keep it consistent with `merge.py`."}}