12e1765 | Anthony Scopatz | 13 December 2018, 15:27:45 UTC | Merge branch 'sparse' into sparse-parafac | 13 December 2018, 15:27:45 UTC |
895a805 | Anthony Scopatz | 13 December 2018, 15:22:33 UTC | Merge branch 'sparse' of github.com:Quansight/tensorly into sparse | 13 December 2018, 15:22:33 UTC |
952b684 | Anthony Scopatz | 13 December 2018, 15:11:01 UTC | some minor sparse fixes | 13 December 2018, 15:11:01 UTC |
3c8fec9 | Hameer Abbasi | 13 December 2018, 11:49:53 UTC | Wrap non-negative PARAFAC for the sparse back-end. | 13 December 2018, 11:49:53 UTC |
4922c55 | Hameer Abbasi | 13 December 2018, 11:49:27 UTC | Fix typo in non-negative PARAFAC kwarg. | 13 December 2018, 11:49:27 UTC |
ae0f5eb | Anthony Scopatz | 12 December 2018, 20:06:12 UTC | Merge branch 'sparse' into sparse-parafac | 12 December 2018, 20:06:12 UTC |
1f1c500 | Anthony Scopatz | 12 December 2018, 20:03:59 UTC | remove sparse tensor | 12 December 2018, 20:03:59 UTC |
367f376 | Aaron Meurer | 11 December 2018, 20:45:23 UTC | Fix some text in a comment | 11 December 2018, 20:45:23 UTC |
15ed539 | Aaron Meurer | 10 December 2018, 21:26:07 UTC | Fold non_negative_parafac() into parafac(non_negative=True) non_negative_parafac() still exists as a alias to it. | 10 December 2018, 21:26:07 UTC |
ee17745 | Aaron Meurer | 07 December 2018, 20:21:26 UTC | Convert A and b to csc in sparse.solve This avoids warnings from scipy that csc is more efficient when using solve. | 07 December 2018, 20:21:26 UTC |
ba19cfc | Aaron Meurer | 06 December 2018, 22:30:10 UTC | Add kruskal_to_tensor to the sparse backend | 06 December 2018, 22:30:10 UTC |
6cb7e71 | Aaron Meurer | 06 December 2018, 19:25:21 UTC | Fix typo in mxnet moveaxis | 06 December 2018, 19:25:21 UTC |
91d56bc | Aaron Meurer | 06 December 2018, 19:23:38 UTC | Remove axis keyword argument from prod() call It is a different keyword argument name for different backends. | 06 December 2018, 19:23:38 UTC |
680c750 | Aaron Meurer | 06 December 2018, 19:15:03 UTC | Fix stack for the pytorch backend It calls the second argument 'dim' instead of 'axis'. | 06 December 2018, 19:15:03 UTC |
57f8751 | Aaron Meurer | 06 December 2018, 19:09:58 UTC | Use an implementation of moveaxis that supports negative indices for mxnet | 06 December 2018, 19:09:58 UTC |
ce48e52 | Aaron Meurer | 06 December 2018, 18:53:58 UTC | Make sure the dot product is against a n x 1 vector Only NumPy will take the dot product of a shape (m, n) with shape (n,) array it seems. | 06 December 2018, 18:59:30 UTC |
d5a2c48 | Aaron Meurer | 06 December 2018, 18:49:08 UTC | Fix moveaxis for the pytorch backend for negative source or target | 06 December 2018, 18:49:08 UTC |
0bb275a | Aaron Meurer | 06 December 2018, 18:47:22 UTC | Fix moveaxis for the tensorflow backend for negative source or target arguments | 06 December 2018, 18:47:22 UTC |
b51171b | Aaron Meurer | 06 December 2018, 18:33:05 UTC | Use a.dot(b) for the numpy backend dot This fixes an issue with the sparse library when dotting a sparse array with a dense array. | 06 December 2018, 18:33:05 UTC |
71150f7 | Aaron Meurer | 06 December 2018, 18:15:25 UTC | Add stack to the pytorch backend | 06 December 2018, 18:15:25 UTC |
ca56b96 | Aaron Meurer | 06 December 2018, 18:13:29 UTC | Fix an instance of array.dot -> tl.dot | 06 December 2018, 18:13:29 UTC |
814d254 | Aaron Meurer | 06 December 2018, 18:07:40 UTC | Use tl.dot and tl.transpose instead of .dot and .T | 06 December 2018, 18:07:40 UTC |
2a0d58c | Aaron Meurer | 06 December 2018, 18:03:58 UTC | Merge branch 'sparse' into sparse-parafac | 06 December 2018, 18:03:58 UTC |
21d49b7 | Aaron Meurer | 06 December 2018, 17:57:28 UTC | Add stack to the other backends | 06 December 2018, 17:57:28 UTC |
9bf66a4 | Aaron Meurer | 06 December 2018, 17:51:49 UTC | Use tl.moveaxis instead of np.moveaxis | 06 December 2018, 17:51:49 UTC |
ce58bc1 | Aaron Meurer | 05 December 2018, 21:26:04 UTC | Add explanatory comment | 05 December 2018, 21:26:04 UTC |
1cf4b5c | Aaron Meurer | 05 December 2018, 19:04:08 UTC | Print the variation after 2 iterations instead of 3 | 05 December 2018, 19:04:08 UTC |
d382f20 | Aaron Meurer | 05 December 2018, 19:03:59 UTC | Easier to read verbose output | 05 December 2018, 19:03:59 UTC |
ab42284 | Aaron Meurer | 05 December 2018, 18:53:16 UTC | Fix typo in norm calculation | 05 December 2018, 18:53:16 UTC |
ccad6e1 | Aaron Meurer | 04 December 2018, 22:23:56 UTC | Add stack to the backend core so that tl.stack works | 04 December 2018, 22:23:56 UTC |
a769a0b | Aaron Meurer | 04 December 2018, 21:50:57 UTC | Remove random-sparse method from initialize_factors() | 04 December 2018, 21:50:57 UTC |
111e636 | Aaron Meurer | 04 December 2018, 21:42:43 UTC | Add stack() to the numpy and sparse backends It still needs to be added to the other backends. | 04 December 2018, 21:42:43 UTC |
0a08c08 | Aaron Meurer | 04 December 2018, 21:41:59 UTC | Leave in some commented out code, but clarify what it is | 04 December 2018, 21:41:59 UTC |
3b67a89 | Aaron Meurer | 04 December 2018, 21:40:51 UTC | Indicate how many modes there are in the verbose message | 04 December 2018, 21:40:51 UTC |
2b407b2 | Aaron Meurer | 04 December 2018, 20:04:04 UTC | Fix IndexError in parafac | 04 December 2018, 20:04:04 UTC |
b3054cc | Aaron Meurer | 04 December 2018, 19:12:46 UTC | Compute the norm at the end of ALS in a sparse-safe way We can never compute the exact kruskal_to_tensor() for a decomposed sparse tensor, because it will be highly dense due to numerical inaccuracies (the zeroes of the original will become near-zeroes). Rather, we compute ||tensor - kruskal_to_tensor(factors)|| as sqrt(||tensor||^2 + ||factors||^2 - 2<tensor, factors>). The second term can be computed via sum(hadamard_product(f.T.dot(f) for f in factors)). See section 5.2.5 from Bader, Brett W., and Tamara G. Kolda. "Efficient MATLAB computations with sparse and factored tensors." SIAM Journal on Scientific Computing 30.1 (2007): 205-231. The third term can be computed from the matricized Khatri-Rao product computed earlier in the algorithm. The idea was this was taken from the above cited paper and corresponding source code. See https://gitlab.com/tensors/tensor_toolbox/blob/master/cp_als.m and https://gitlab.com/tensors/tensor_toolbox/blob/master/@ktensor/norm.m. The norm computed here is not numerically identical to the norm as previously computed, due to numerical differences. This still requires cleanup to continue to work with non-sparse arrays (I haven't factored out sparse.stack to the backend yet). | 04 December 2018, 19:12:46 UTC |
4ff986b | Anthony Scopatz | 03 December 2018, 21:51:38 UTC | more docs | 03 December 2018, 21:51:38 UTC |
e49a448 | Anthony Scopatz | 03 December 2018, 20:48:05 UTC | try to fix local_threadsafe tests | 03 December 2018, 20:48:05 UTC |
6a5ac92 | Anthony Scopatz | 03 December 2018, 20:38:58 UTC | import tensorly as tl | 03 December 2018, 20:38:58 UTC |
2c8555a | Anthony Scopatz | 03 December 2018, 20:18:00 UTC | make_session_default -> local_threadsafe | 03 December 2018, 20:18:00 UTC |
359ee35 | Aaron Meurer | 30 November 2018, 23:34:37 UTC | Some more verbose printing This commit should eventually be reverted. | 30 November 2018, 23:34:37 UTC |
c864360 | Aaron Meurer | 30 November 2018, 23:34:17 UTC | Better variable names | 30 November 2018, 23:34:17 UTC |
2653b70 | Aaron Meurer | 30 November 2018, 20:30:21 UTC | Experimental work in progress support for sparse matrix-times-khatri-rao | 30 November 2018, 20:30:21 UTC |
f2fc3f1 | Anthony Scopatz | 29 November 2018, 23:39:35 UTC | added sparse tensor to initi | 29 November 2018, 23:39:35 UTC |
1608ad0 | Anthony Scopatz | 29 November 2018, 23:20:50 UTC | added sparse_tensor and backend system docs | 29 November 2018, 23:20:50 UTC |
6e03faa | Anthony Scopatz | 29 November 2018, 22:22:14 UTC | revert tests to using relative imports | 29 November 2018, 22:22:14 UTC |
e636133 | Anthony Scopatz | 28 November 2018, 21:13:04 UTC | Sparse developer docs fixes | 28 November 2018, 21:13:04 UTC |
eeac726 | Anthony Scopatz | 28 November 2018, 19:05:53 UTC | Sparse developer docs | 28 November 2018, 19:05:53 UTC |
79a29e3 | Aaron Meurer | 26 November 2018, 23:32:43 UTC | Clear trailing whitespace in candecomp_parafac.py | 26 November 2018, 23:32:43 UTC |
0bbba71 | Aaron Meurer | 26 November 2018, 23:32:26 UTC | Split out some variables for easier debugging | 26 November 2018, 23:32:26 UTC |
29c6ddd | Aaron Meurer | 26 November 2018, 23:30:51 UTC | Add random-sparse initialize_factors method This is still experimental. I still need to figure out how to reliably get an initial set of factors that are dense for the algorithm to work but sparse enough to work with large sparse tensors. | 26 November 2018, 23:30:51 UTC |
b1e93bb | Aaron Meurer | 26 November 2018, 23:29:55 UTC | Add solve for the sparse backend | 26 November 2018, 23:29:55 UTC |
f1941ec | Aaron Meurer | 26 November 2018, 23:29:26 UTC | Wrap parafac for sparse (it doesn't actually work yet) | 26 November 2018, 23:29:26 UTC |
ba1c13b | Anthony Scopatz | 26 November 2018, 20:48:05 UTC | fixed make_session_default tests | 26 November 2018, 20:48:05 UTC |
f6a908d | Anthony Scopatz | 26 November 2018, 20:42:21 UTC | some minor refactors | 26 November 2018, 20:42:21 UTC |
f532a16 | Anthony Scopatz | 26 November 2018, 19:35:52 UTC | Skip MPS tests when on tensorflow backend due to unsupported fancy indexing operations | 26 November 2018, 19:35:52 UTC |
c66bd7b | Anthony Scopatz | 26 November 2018, 18:47:37 UTC | Merge branch 'master' into sparse | 26 November 2018, 18:47:37 UTC |
3a35360 | Jean Kossaifi | 26 November 2018, 16:25:12 UTC | DOC FIX: home page user_guide link | 26 November 2018, 16:25:12 UTC |
9fc1f82 | Aaron Meurer | 20 November 2018, 19:03:33 UTC | Add argmin and argmax for tensorflow | 20 November 2018, 19:03:33 UTC |
4848bf9 | Aaron Meurer | 19 November 2018, 23:45:40 UTC | register_method is only for functions that *aren't* defined as staticmethods | 19 November 2018, 23:45:40 UTC |
23d21ba | Aaron Meurer | 19 November 2018, 23:32:04 UTC | Fix assert_ import | 19 November 2018, 23:32:04 UTC |
f7a9519 | Aaron Meurer | 19 November 2018, 23:28:15 UTC | Add argmin and argmax to __init__.py | 19 November 2018, 23:28:15 UTC |
e4144a0 | Aaron Meurer | 19 November 2018, 23:09:15 UTC | Merge branch 'master' into sparse | 19 November 2018, 23:09:15 UTC |
ff75e67 | Jim Crist | 30 October 2018, 14:41:47 UTC | Add tensorly.contrib.sparse.tenalg | 30 October 2018, 14:41:47 UTC |
ec8add1 | Jean Kossaifi | 29 October 2018, 14:45:26 UTC | Random: deprecate old functions | 29 October 2018, 14:45:26 UTC |
841e7e6 | Jean Kossaifi | 29 October 2018, 14:30:25 UTC | DOC: update random module API | 29 October 2018, 14:30:25 UTC |
e782136 | Jean Kossaifi | 29 October 2018, 14:29:04 UTC | Refactored random module | 29 October 2018, 14:29:04 UTC |
c5cef8e | Jean Kossaifi | 29 October 2018, 14:28:39 UTC | Sanity checks on rank for MPS | 29 October 2018, 14:28:39 UTC |
54297a3 | Jean Kossaifi | 28 October 2018, 21:00:47 UTC | FIX: use tl.ones not np. | 28 October 2018, 21:00:47 UTC |
8104e06 | Jean Kossaifi | 28 October 2018, 20:53:28 UTC | FIX: (multi_)mode_dot with vector | 28 October 2018, 20:53:28 UTC |
9badf5d | Jean Kossaifi | 28 October 2018, 18:11:22 UTC | Do not set global random seed | 28 October 2018, 18:11:22 UTC |
d4b1854 | Jean Kossaifi | 28 October 2018, 18:02:33 UTC | DOC: add contrib to API | 28 October 2018, 18:02:33 UTC |
f15cf2e | Jean Kossaifi | 28 October 2018, 18:02:01 UTC | Contrib: add decomposition submodule | 28 October 2018, 18:02:01 UTC |
d82e08b | Jean Kossaifi | 28 October 2018, 14:21:49 UTC | Merge pull request #73 from wumming/TTcross Cross-approx algorithm for MSP/tensor-train decomposition | 28 October 2018, 14:21:49 UTC |
a7971af | Jean Kossaifi | 27 October 2018, 19:47:36 UTC | Typos | 27 October 2018, 19:47:36 UTC |
cd25045 | Jean Kossaifi | 27 October 2018, 19:46:30 UTC | Updated guide | 27 October 2018, 19:46:30 UTC |
c8095a4 | Jean Kossaifi | 27 October 2018, 17:13:53 UTC | Removed un-necessary import | 27 October 2018, 17:13:53 UTC |
3ff301c | Jean Kossaifi | 08 October 2018, 12:27:34 UTC | Edit AUTHORS list | 08 October 2018, 12:27:34 UTC |
aa076e5 | Jim Crist | 28 September 2018, 21:20:01 UTC | Add numpy sparse backend | 02 October 2018, 03:22:24 UTC |
404b8bd | Jim Crist | 02 October 2018, 00:33:07 UTC | Test tensorflow backend on travis | 02 October 2018, 00:33:07 UTC |
cd83529 | Jim Crist | 01 October 2018, 23:21:49 UTC | Document generic backend methods | 01 October 2018, 23:21:49 UTC |
3752779 | Jim Crist | 01 October 2018, 22:55:12 UTC | Refactor again - Use classes, to hopefully make the backend implementations clearer for others. - Add ability to set backend for all threads. Default is still thread/context local, but we may want to change that later. | 01 October 2018, 22:57:11 UTC |
9b8ad49 | Jim Crist | 28 September 2018, 19:49:11 UTC | Add tests for set_backend/get_backend | 28 September 2018, 19:49:11 UTC |
f6ebddb | Jim Crist | 28 September 2018, 18:21:20 UTC | Remove backend-specific test utils Having these as backend specific was unnecessary. - Create `tensorly.testing` - Move all test imports to `tensorly.testing`. - Use absolute imports for test imports. For tests this makes more sense than relative imports, and is standard practice in the numerical python ecosystem. | 28 September 2018, 18:21:20 UTC |
80ee222 | Jim Crist | 28 September 2018, 14:18:12 UTC | flake | 28 September 2018, 14:18:12 UTC |
b9dbf5d | Jim Crist | 28 September 2018, 13:59:21 UTC | Refactor cupy backend | 28 September 2018, 13:59:21 UTC |
7cf259a | Jim Crist | 28 September 2018, 13:46:43 UTC | Refactor tensorflow backend | 28 September 2018, 13:46:43 UTC |
15f1d4d | Jim Crist | 27 September 2018, 22:31:13 UTC | Refactor mxnet backend | 27 September 2018, 22:31:13 UTC |
2b79f10 | Jim Crist | 27 September 2018, 21:36:27 UTC | Refactor pytorch backend, add flake8 | 27 September 2018, 21:40:36 UTC |
b6cebd4 | Jim Crist | 27 September 2018, 21:03:31 UTC | Continue refactor - Add docstrings for all public methods - A few style cleanups - Explicitly import things into top-level namespace - Remove a few unnecessary backend methods. | 27 September 2018, 21:03:31 UTC |
6dcb645 | Jim Crist | 27 September 2018, 17:55:03 UTC | WIP: refactor backends | 27 September 2018, 20:12:24 UTC |
6f85b26 | Zongyi Li | 21 September 2018, 17:16:45 UTC | move check_random_state(1) | 21 September 2018, 17:16:45 UTC |
5ef625f | Jean Kossaifi | 21 September 2018, 11:08:39 UTC | Specify SVD fun for tucker | 21 September 2018, 11:08:39 UTC |
e22fa80 | Zongyi Li | 19 September 2018, 17:49:39 UTC | delete hard coded dtype. | 19 September 2018, 17:49:39 UTC |
fa50f7a | Zongyi Li | 19 September 2018, 17:46:03 UTC | Merge branch 'master' into TTcross | 19 September 2018, 17:46:03 UTC |
47b57dd | Zongyi Li | 19 September 2018, 17:37:51 UTC | Merge branch 'TTcross' of https://github.com/wumming/tensorly into TTcross | 19 September 2018, 17:37:51 UTC |
0c33fc0 | Zongyi Li | 19 September 2018, 16:12:19 UTC | modify pytorch's tl.tensor(). delete int()/tensor_as_indices() | 19 September 2018, 17:33:45 UTC |
4e9ed27 | Zongyi Li | 19 September 2018, 07:10:38 UTC | change int() to tensor_as_indices() and minor changes | 19 September 2018, 17:33:45 UTC |
463b553 | Zongyi Li | 14 September 2018, 18:15:59 UTC | use solve instead of inverse, delete npr.seed() | 19 September 2018, 17:33:45 UTC |
975c84b | Zongyi Li | 08 September 2018, 21:28:00 UTC | Fix bugs for MxNet 1. wrapper Numpy's inverse for MxNet. 2. MxNet is not robust when vector has size 1. Add a base case for it. 3. MxNet is not robust for a/b. transpose b so that a and b are in the same shape. | 19 September 2018, 17:33:45 UTC |