https://web.archive.org/web/20111015133833/http://www-staff....
This was used in his shape aware language FiSh, for dealing with multidimensional arrays. Shape compatibilities were statically type checked, if I recall correctly. Shapes were also used to optimize the loops.
[Programming in FISh] https://link.springer.com/article/10.1007/s100090050037
[Towards Dynamic Shaping] https://www.researchgate.net/publication/265975794_Towards_D...
The "gotcha" is that Haskell is heavy duty machinery, and getting up to speed with it if your background lacks solid type-theory can be really daunting. For that reason alone, it could never be the default. Sometimes I like to think about how much of a disservice academia has done to itself by training mathematicians without giving them the foundational knowledge they need to utilize the nuclear-grade tooling they themselves have the most potential to benefit from. For a number theorist? Sure makes sense. But the fact that machine learning courses don't have rigorous undergraduate prerequisites in learning the foundation of computation is pure absurdity.
[1] - http://hasktorch.org/
Looks a little FiShy. In a good way [0].
The worst I have had in a while is when I was dealing with a sparse array data type and getting some processing done in a C function to speed things up.
Infuriatingly enough, the index type used to change after initialising the array. It would check if Int32 could accomodate the size of the array. If it could it would downgrade to Int32 at runtime. My C counterpart had no clue.
That was so not fun to debug because the errors were intermittent (depending on the fill factor of the sparse array)
Erm... many would disagree. I think what he means is just a multidimensional array.
An appropriate tensor can certainly be represented by a multidimensional array but not all multidimensional arrays are tensors. It depends on how that multidimensional array participates with others.
For example, (lat, long) is not a 2d vector although it can be represented as a 2 dimensional array.
I think it genuinely damages people's ability to digest the mathematics to tell them first and foremost that these objects are collections of numbers.
{
{user:bob, movie:"Heat"}:0.1,
{user:alice, movie:"Frozen"}:0.9,
{user:carol, movie:"Top Gun"}:0.3,
}
https://docs.vespa.ai/en/ranking/tensor-user-guide.htmlYikes! No.
I mean even for the intents and purposes of using this definition in ML, this might not be right.
I am trying not to be pedantic, so I will not go with the official/mathematical definition of a tensor as that could be incredibly confusing (look it up!!!).
But a tensor is a LOT more than that. Essentially it's a multilinear map that transforms a set of basis vectors in a certain way, and is coordinate agnostic.
This is not even half its definition so you can see how much the author left out.
Having said that, this is still a good way to start getting intuition into it and I urge the author to continue refining the definition as he/she learns more.
Disclaimer: MS in Math with concentration of GR.
EDIT: Also tensor aren't simply "flat" array of numbers. They are multidimensional. A grounded example, a rank 3 tensor is a collection of 2d matrices. Think of it as a bunch of 2d matrices stacked on top of each other. You need 3 indices to keep track of numbers --- sure in a programming language, it can be represented as a 1d array as well with 0s filling up empty spaces, but you get the idea.
I'm so very, very tired of tech coopting rigorous mathematical terms.
This also happens to "numbers", "integers" and such, because in the computer universe don't exist out math, only a subset(?) variation(?) of it
> coopt: to appropriate as one's own; preempt.
The term existed for some time before programming if that's your source of confusion. Now it is a twisted and ambiguous version of itself.