Tensor Toolbox version 2.6
by Brett W. Bader, Tamara G. Kolda, Jimeng Sun, Evrim Acar,
Daniel M. Dunlavy, Eric C. Chi, Jackson Mayo, et al.
Copyright 2015, Sandia National Laboratories.
Released February 6, 2015
============================================
Changes from Version 2.5 (February 1, 2012)
============================================
Top Level
- Added new EIG_GEAP function for computing generalized tensor
eigenpairs. Renamed SSHOPM to EIG_SSHOPM and added support for
adaptive shift (now the default). Renamed SSHOPMC to EIG_SSHOPMC.
- Major updates to CP_APR, including changing the default to use
2nd-order optimization per paper of Hansen, Plantenga, & Kolda. See
method help for more information.
- Minor changes to CP_ALS: (1) Fixed bug in normalization step. (2)
Updated some calculations per work of Phan Anh Huy. (3) Forced
printing of last iteration so long as printitn > 0.
- Updated MTTKRP and KHATRIRAO, per work of Phan Anh Huy.
- Fixed bug in CREATE_PROBLEM for 'Sparse_Generation'.
- Added SPTENSOR support EXPORT_DATA and IMPORT_DATA. Added KTENSOR
support to IMPORT_DATA.
- Updated random number generator references to the new MATLAB
implementsion in CREATE_PROBLEM and CREATE_GUESS.
- Added instructions for adding MET to the pat in INSTALL.txt.
- Fixed function name for TT_FAC_TO_VEC per Evrim Acar bug report.
- Added new function MATRANDNORM.
- Renamed TT_CCONG to MATRANDCONG, TT_RANDORTHMATH to MATRANDORTH.
- Removed TT_ASSIGNMENT_TYPE, TT_COMBINATOR, TT_CP_W*,
TT_CREATE_MISSING_DATA_PATTERN.
- Modernized documentation with class support.
Class: ktensor
- Fixed SUBSREF to properly handle lists of indices.
- Only call ARRANGE from NORMALIZE if there are multiple
components. Force ARRANGE to produce dense matrices. Fixes bug
reported by Jason Mattax on 3/1/2012.
- Fixed comments for NORMALIZE, SUBSREF.
- Added ISSYMMETRIC and SYMMETRIZE functions.
- Constructor can now take SYMKTENSOR as an input.
Class: sptensor
- Fixed bug in SUBSASGN discovered by Sebastien Bratieres pertaining
to empty tensors.
Class: tensor
- Fixed bug in ISSYMMETRIC with respect to groups.
Acknowledgments:
- The function @symtensor/private/multinomial.m is from Mukhtar Ullah
and was distributed via the MATLAB file exchange.
============================================
Changes from Version 2.4 (March 22, 2010)
============================================
Top Level
- The "algorithms" directory has been eliminated. All routines are now
at the root level, meaning that only one directory has to be added
to the path to get all of Tensor Toolbox's standard functionality.
- Added new CREATE_PROBLEM and CREATE_GUESS routines that can be used
to generate test problems and initial guesses. These were first used
at the AIM 2010 Tensor Decomposition workshop. Added TT_RANDORTHMAT,
a helper function for creating problems.
- Added new SSHOPM and SSHOPMC code for Shifted Symmetric Higher-Order
Power Method for computing tensor eigenpairs.
- Added new CP_APR method for Poisson Tensor Factorization via
alternating Poisson regression, along with helper function
tt_loglikelihood.
- Added TENEYE to create "identity tensor".
- Helper functions for CP_OPT and CP_WOPT (like cp_fg) now have "tt_"
prepended to their names. They are not listed in the contents files.
- Adding ability to import and export text versions of matrices and
tensors via IMPORT_DATA/EXPORT_DATA functions.
- Making calling sequence to TENZEROS, TENRAND, and TENONES
consistent. Now all three will take either a size array or a list,
i.e., tenones([5 4 3]) or tenones(5,4,3) produce the same
results. Eliminated two-argument version of tenzeros, i.e., a call
to tenzeros(M,N) should be changed to tenzeros(N*ones(1,M)).
- Added additional comments in CP_ALS.
- Made output of CP_WOPT consistent with CP_OPT, i.e., now includes
output of optimization method.
- Fixed bug for empty tensor in TENONES.
- Fixed TT_IND2SUB, TT_SUB2IND to handle empty inputs.
Documentation
- Added documentation in the help browser for cp_opt, cp_wopt, cp_als,
and sshopm.
Class: tensor
- Added SYMMETRIZE function to symmetrize a tensor and ISSYMMETRIC
function to check if a tensor is symmetric.
- Adding new TTSV function to compute a tensor times the same vector
in every mode. Intended for symmetric tensors and doesn't allow user
to specify exactly which modes are skipped.
- Fixed "empty tensor" bugs in TENSOR (constructor), PERMUTE, COLLAPSE.
- Fixed "1D tensor" bug in TENMAT.
- Fixed bug with no results in FIND.
- More error checking in MTTKRP.
CLASS: sptensor
- Added DIVIDE function for elementwise division.
Class: ktensor
- Added new SCORE function to compute "factor match score" for
two ktensor's. Includes "greedy" option when
- Added new REDISTRIBUTE function to redistribute the weights from
lambda into a specified mode.
- Fixed bug in NORM, which sometimes returned a negative value due to
small errors in the calculation. Now it returns max(0,val).
- Added ISEQUAL function that checks for elementwise equality on
individual components.
- Lots of new options for the NORMALIZE function.
Class: ttensor
- Added ISEQUAL function that checks for elementwise equality on
individual components.
============================================
Changes from Version 2.3 (July 8, 2009)
============================================
General
- tenzeros(m,n): Now has the ability to create an mth-order tensor of
size n in every mode. tenzeros(siz) still works as usual.
- tt_subcheck now uses isfinite rather than ~isnan and ~isinf based on
error report from user.
Algorithms
- Added new cp_opt and cp_wopt functions (and related utility
functions) for computing CP and weighted CP via optimization.
Requires that the user also install the Poblano Toolbox for
Matlab. This is freely available at
http://software.sandia.gov/trac/poblano.
- Changed the way that cp_als and tucker_als handle input arguments so
that they can now be parameter-value pairs. Should be backwards
compatible with old calling sequence.
- cp_als: Reverted the way that Unew is calculated from Unew = Unew *
pinv(Y) to Unew (Y \ Unew')'; which is from TTB2.2 and seems to give
better performance.
Class: sptensor
- permute - Added check for empty tensor based on user error report.
- spmatrix - Added check for empty tensor based on user error report.
- sptensor - Replaced "~" with "junk" so it will work with Matlab 7.8
(older version). Allowed sptensor to take an sptensor3 object
(though this class is not released yet) as input and convert it.
Class: ktensor
- Revamped "arrange" so that it can also just accept a permutation and
rearrange the components.
- Adding a new "extract" function to select and extract a subset of the
components (rank-one factors) of a ktensor.
- Adding a new function "ncomponents" to return the number of
components.
- Added a "normalize" function that normalizes the columns of the factor
matrices to length 1 and absorbs the weights into lambda (without
rearranging the factors).
- Added new function "tocell" to convert a ktensor to a cell array.
Class: sptenmat
- In function "double", added check for empty tensor based on error
report from user.
============================================
Changes from Version 2.2 (January 10, 2007)
============================================
General:
- Added Memory Efficient Tucker (MET) package by Tamara Kolda and
Jimeng Sun. Type 'help tucker_me' after installation for more
information.
- Fixed bug in tenzeros command so that it now returns an empty tensor
when the initial size is emtpy.
- Fixed bug in tt_assignment_type so that it works with a sparse
tensor that is initially completely empty.
- Added comments to tt_sub2ind and tt_ind2sub.
- Removed errant ^M's at the end of every line of tt_subscheck.
Algorithms:
- Changed parafac_als to cp_als (old one can still be called but is
deprecated).
- Added an