{"action":"created","issue":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4693","repository_url":"https://api.github.com/repos/scikit-learn/scikit-learn","labels_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4693/labels{/name}","comments_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4693/comments","events_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4693/events","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4693","id":74363508,"number":4693,"title":" making dictionary learning closer to the SparseNet algorithm","user":{"login":"laurentperrinet","id":381808,"avatar_url":"https://avatars0.githubusercontent.com/u/381808?v=4","gravatar_id":"","url":"https://api.github.com/users/laurentperrinet","html_url":"https://github.com/laurentperrinet","followers_url":"https://api.github.com/users/laurentperrinet/followers","following_url":"https://api.github.com/users/laurentperrinet/following{/other_user}","gists_url":"https://api.github.com/users/laurentperrinet/gists{/gist_id}","starred_url":"https://api.github.com/users/laurentperrinet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/laurentperrinet/subscriptions","organizations_url":"https://api.github.com/users/laurentperrinet/orgs","repos_url":"https://api.github.com/users/laurentperrinet/repos","events_url":"https://api.github.com/users/laurentperrinet/events{/privacy}","received_events_url":"https://api.github.com/users/laurentperrinet/received_events","type":"User","site_admin":false},"labels":[{"id":297514516,"url":"https://api.github.com/repos/scikit-learn/scikit-learn/labels/Needs%20Review","name":"Needs Review","color":"f7c6c7","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":10,"created_at":"2015-05-08T13:26:05Z","updated_at":"2017-12-12T00:48:46Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/pulls/4693","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4693","diff_url":"https://github.com/scikit-learn/scikit-learn/pull/4693.diff","patch_url":"https://github.com/scikit-learn/scikit-learn/pull/4693.patch"},"body":"The dictionary learning algorithm was assuming that the norm of the filters was equal to one. By using a heuristic to control for the norm of the filters, we allow for a more equilibrated learning. The implementation is a simplification of the one used in the original paper from Olshausen.\n\nThe dictionary learning is tested in:\nhttp://blog.invibe.net/posts/2015-05-05-reproducing-olshausens-classical-sparsenet.html\nand this PR is tested in:\nhttp://blog.invibe.net/posts/2015-05-06-reproducing-olshausens-classical-sparsenet-part-2.html\n"},"comment":{"url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/comments/350907985","html_url":"https://github.com/scikit-learn/scikit-learn/pull/4693#issuecomment-350907985","issue_url":"https://api.github.com/repos/scikit-learn/scikit-learn/issues/4693","id":350907985,"user":{"login":"jnothman","id":78827,"avatar_url":"https://avatars2.githubusercontent.com/u/78827?v=4","gravatar_id":"","url":"https://api.github.com/users/jnothman","html_url":"https://github.com/jnothman","followers_url":"https://api.github.com/users/jnothman/followers","following_url":"https://api.github.com/users/jnothman/following{/other_user}","gists_url":"https://api.github.com/users/jnothman/gists{/gist_id}","starred_url":"https://api.github.com/users/jnothman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnothman/subscriptions","organizations_url":"https://api.github.com/users/jnothman/orgs","repos_url":"https://api.github.com/users/jnothman/repos","events_url":"https://api.github.com/users/jnothman/events{/privacy}","received_events_url":"https://api.github.com/users/jnothman/received_events","type":"User","site_admin":false},"created_at":"2017-12-12T00:48:46Z","updated_at":"2017-12-12T00:48:46Z","author_association":"OWNER","body":"You have a logic failure coming out in the tests when fitting:\r\n```pytb\r\nTraceback (most recent call last):\r\n  File \"/home/travis/miniconda/envs/testenv/lib/python2.7/site-packages/nose/case.py\", line 197, in runTest\r\n    self.test(*self.arg)\r\n  File \"/home/travis/build/scikit-learn/scikit-learn/sklearn/utils/testing.py\", line 741, in __call__\r\n    return self.check(*args, **kwargs)\r\n  File \"/home/travis/build/scikit-learn/scikit-learn/sklearn/utils/testing.py\", line 292, in wrapper\r\n    return fn(*args, **kwargs)\r\n  File \"/home/travis/build/scikit-learn/scikit-learn/sklearn/utils/estimator_checks.py\", line 460, in check_dict_unchanged\r\n    estimator.fit(X, y)\r\n  File \"/home/travis/build/scikit-learn/scikit-learn/sklearn/decomposition/dict_learning.py\", line 1482, in fit\r\n    return_n_iter=True\r\n  File \"/home/travis/build/scikit-learn/scikit-learn/sklearn/decomposition/dict_learning.py\", line 739, in dict_learning_grad\r\n    residual = this_X - np.dot(this_code.T, dictionary.T)\r\nValueError: matrices are not aligned\r\n```"}}
{"actor":{"display_login":"jnothman"}}