factor/extra/tensors/tensors-docs.factor

137 lines
6.4 KiB
Factor
Raw Permalink Normal View History

tensors: create basic tensors vocabulary. tensors: create tensors vocabulary. tensors: create file heading tensors: define tensor constructor. tensors: add additional constructors. tensors: add reshaping. tensors: implement add and include tests. tensors: add binary operations. tensors: add scalar multiply. tensors: added >array functionality tensors: tests for >array tensors: unit tests fix tensors: use more idiomatic >array. tensors: add multi-methods for scalar multiplication. tensors: cleaned up >array tensors: combine a few constructors tensors: added dims function and unit tests. tensors: add documentation capabilities. tensors: added multi-methods for scalar addition/subtraction/division help.lint.coverage: fix for shadowing "empty" word; prevent the other test-only words from being shadowed too soundex: move to extra as it's unused; fix authors.txt filename modify arange to match numpy; replace with naturals create >float-array for efficient float array construction use combinators tensors: documentation added for public functions. tensors: implement t% and matrix multiplication. tensors: add slice with non-zero step tensors: add documentation. tensors: added transposition funcitonality, with documentation and tests tensors: add error documentation. Add error documentation tensors: fix matmul documentation. extra/tensors: add tests for arange tensors: make transpose style more similar tensors: make some of the PR changes. tensors: separate shape checking. tensors: add documentation for non-positive-shape-error. tensors: add missing comment. tensors: transpose edits for efficiency
2019-10-29 13:09:38 -04:00
! Copyright (C) 2019 HMC Clinic.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays help.markup help.syntax math sequences ;
IN: tensors
ARTICLE: "tensors" "Tensors" "A " { $snippet "tensor" } " is a sequence "
"of floating point numbers "
"shaped into an n-dimensional matrix. It supports fast, scalable matrix "
"operations such as matrix multiplication and transposition as well as a "
"number of element-wise operations. Words for working with tensors are found "
2019-11-24 18:43:29 -05:00
"in the " { $vocab-link "tensors" } " vocabulary." $nl $nl
tensors: create basic tensors vocabulary. tensors: create tensors vocabulary. tensors: create file heading tensors: define tensor constructor. tensors: add additional constructors. tensors: add reshaping. tensors: implement add and include tests. tensors: add binary operations. tensors: add scalar multiply. tensors: added >array functionality tensors: tests for >array tensors: unit tests fix tensors: use more idiomatic >array. tensors: add multi-methods for scalar multiplication. tensors: cleaned up >array tensors: combine a few constructors tensors: added dims function and unit tests. tensors: add documentation capabilities. tensors: added multi-methods for scalar addition/subtraction/division help.lint.coverage: fix for shadowing "empty" word; prevent the other test-only words from being shadowed too soundex: move to extra as it's unused; fix authors.txt filename modify arange to match numpy; replace with naturals create >float-array for efficient float array construction use combinators tensors: documentation added for public functions. tensors: implement t% and matrix multiplication. tensors: add slice with non-zero step tensors: add documentation. tensors: added transposition funcitonality, with documentation and tests tensors: add error documentation. Add error documentation tensors: fix matmul documentation. extra/tensors: add tests for arange tensors: make transpose style more similar tensors: make some of the PR changes. tensors: separate shape checking. tensors: add documentation for non-positive-shape-error. tensors: add missing comment. tensors: transpose edits for efficiency
2019-10-29 13:09:38 -04:00
"Tensors can be created "
"by calling one of four constructors:"
{ $subsections zeros ones naturals arange }
"They can be converted to the corresponding N-dimensional array with"
{ $subsections tensor>array }
"The number of dimensions can be extracted with:"
{ $subsections dims }
"Additionally, tensors can be reshaped with:"
{ $subsections reshape flatten }
"Tensors can be combined element-wise with other tensors as well as numbers with:"
{ $subsections t+ t- t* t/ t% }
"Finally, tensors support the following matrix operations:"
{ $subsections matmul transpose } ;
ARTICLE: "tensor-operators" "Tensor Operators" "Info here" ;
HELP: tensor
{ $class-description "A sequence of floating-point numbers consisting of an "
{ $snippet "underlying" } " C-style array and a " { $snippet "shape" } "." } ;
HELP: shape-mismatch-error
{ $values { "shape1" sequence } { "shape2" sequence } }
{ $description "Throws a " { $link shape-mismatch-error } "." }
{ $error-description "Thrown by element-wise operations such as " { $link t+ }
", " { $link t- } ", " { $link t* } ", " { $link t/ } ", and " { $link t% }
" as well as matrix operations such as " { $link matmul } " if two tensors are "
"passed and they cannot be combined as desired because of a difference in the "
"shape." } ;
HELP: non-positive-shape-error
{ $values { "shape" sequence } }
{ $description "Throws a " { $link non-positive-shape-error } "." }
{ $error-description "Thrown by operations such as " { $link zeros } ", "
{ $link ones } ", " { $link naturals } ", and " { $link reshape }
", which allow users to directly set the shape of a " { $link tensor }
", when the shape has zero or negative values." } ;
HELP: zeros
{ $values { "shape" sequence } { "tensor" tensor } }
{ $description "Initializes a tensor with shape " { $snippet "shape" }
" containing all 0s." }
{ $errors "Throws a " { $link non-positive-shape-error } " if the given "
"shape has zero or negative values." } ;
HELP: ones
{ $values { "shape" sequence } { "tensor" tensor } }
{ $description "Initializes a tensor with shape " { $snippet "shape" }
" containing all 1s." }
{ $errors "Throws a " { $link non-positive-shape-error } " if the given "
"shape has zero or negative values." } ;
HELP: arange
{ $values { "a" number } { "b" number } { "step" number } { "tensor" tensor } }
{ $description "Initializes a one-dimensional tensor with values in a range from "
{ $snippet "a" } " to " { $snippet "b" } " (inclusive) with step-size " { $snippet "step" } "." } ;
HELP: naturals
{ $values { "shape" sequence } { "tensor" tensor } }
{ $description "Initializes a tensor with shape " { $snippet "shape" }
" containing a range of values from 0 to " { $snippet "shape product" } "." }
{ $errors "Throws a " { $link non-positive-shape-error } " if the given "
"shape has zero or negative values." } ;
HELP: reshape
2019-11-24 18:43:29 -05:00
{ $values { "tensor" tensor } { "shape" sequence } }
tensors: create basic tensors vocabulary. tensors: create tensors vocabulary. tensors: create file heading tensors: define tensor constructor. tensors: add additional constructors. tensors: add reshaping. tensors: implement add and include tests. tensors: add binary operations. tensors: add scalar multiply. tensors: added >array functionality tensors: tests for >array tensors: unit tests fix tensors: use more idiomatic >array. tensors: add multi-methods for scalar multiplication. tensors: cleaned up >array tensors: combine a few constructors tensors: added dims function and unit tests. tensors: add documentation capabilities. tensors: added multi-methods for scalar addition/subtraction/division help.lint.coverage: fix for shadowing "empty" word; prevent the other test-only words from being shadowed too soundex: move to extra as it's unused; fix authors.txt filename modify arange to match numpy; replace with naturals create >float-array for efficient float array construction use combinators tensors: documentation added for public functions. tensors: implement t% and matrix multiplication. tensors: add slice with non-zero step tensors: add documentation. tensors: added transposition funcitonality, with documentation and tests tensors: add error documentation. Add error documentation tensors: fix matmul documentation. extra/tensors: add tests for arange tensors: make transpose style more similar tensors: make some of the PR changes. tensors: separate shape checking. tensors: add documentation for non-positive-shape-error. tensors: add missing comment. tensors: transpose edits for efficiency
2019-10-29 13:09:38 -04:00
{ $description "Reshapes " { $snippet "tensor" } " to have shape "
{ $snippet "shape" } "." }
{ $errors "Throws a " { $link non-positive-shape-error } " if the given "
"shape has zero or negative values." } ;
HELP: flatten
2019-11-24 18:43:29 -05:00
{ $values { "tensor" tensor } }
tensors: create basic tensors vocabulary. tensors: create tensors vocabulary. tensors: create file heading tensors: define tensor constructor. tensors: add additional constructors. tensors: add reshaping. tensors: implement add and include tests. tensors: add binary operations. tensors: add scalar multiply. tensors: added >array functionality tensors: tests for >array tensors: unit tests fix tensors: use more idiomatic >array. tensors: add multi-methods for scalar multiplication. tensors: cleaned up >array tensors: combine a few constructors tensors: added dims function and unit tests. tensors: add documentation capabilities. tensors: added multi-methods for scalar addition/subtraction/division help.lint.coverage: fix for shadowing "empty" word; prevent the other test-only words from being shadowed too soundex: move to extra as it's unused; fix authors.txt filename modify arange to match numpy; replace with naturals create >float-array for efficient float array construction use combinators tensors: documentation added for public functions. tensors: implement t% and matrix multiplication. tensors: add slice with non-zero step tensors: add documentation. tensors: added transposition funcitonality, with documentation and tests tensors: add error documentation. Add error documentation tensors: fix matmul documentation. extra/tensors: add tests for arange tensors: make transpose style more similar tensors: make some of the PR changes. tensors: separate shape checking. tensors: add documentation for non-positive-shape-error. tensors: add missing comment. tensors: transpose edits for efficiency
2019-10-29 13:09:38 -04:00
{ $description "Reshapes " { $snippet "tensor" } " so that it is one-dimensional." } ;
HELP: dims
{ $values { "tensor" tensor } { "n" integer } }
{ $description "Returns the dimension of " { $snippet "tensor" } "." } ;
HELP: t+
{ $values { "x" { $or tensor number } } { "y" { $or tensor number } } { "tensor" tensor } }
{ $description "Element-wise addition. Intakes two tensors or a tensor and a number (in either order)." }
{ $errors "Throws a " { $link shape-mismatch-error } " if passed two tensors that are "
"not (or cannot be broadcast to be) the same shape." } ;
HELP: t-
{ $values { "x" { $or tensor number } } { "y" { $or tensor number } } { "tensor" tensor } }
{ $description "Element-wise subtraction. Intakes two tensors or a tensor and a number (in either order)." }
{ $errors "Throws a " { $link shape-mismatch-error } " if passed two tensors that are "
"not (or cannot be broadcast to be) the same shape." } ;
HELP: t*
{ $values { "x" { $or tensor number } } { "y" { $or tensor number } } { "tensor" tensor } }
{ $description "Element-wise multiplication. Intakes two tensors or a tensor and a number (in either order)." }
{ $errors "Throws a " { $link shape-mismatch-error } " if passed two tensors that are "
"not (or cannot be broadcast to be) the same shape." } ;
HELP: t/
{ $values { "x" { $or tensor number } } { "y" { $or tensor number } } { "tensor" tensor } }
{ $description "Element-wise division. Intakes two tensors or a tensor and a number (in either order)." }
{ $errors "Throws a " { $link shape-mismatch-error } " if passed two tensors that are "
"not (or cannot be broadcast to be) the same shape." } ;
HELP: t%
{ $values { "x" { $or tensor number } } { "y" { $or tensor number } } { "tensor" tensor } }
{ $description "Element-wise modulo operator. Intakes two tensors or a tensor and a number (in either order)." }
{ $errors "Throws a " { $link shape-mismatch-error } " if passed two tensors that are "
"not (or cannot be broadcast to be) the same shape." } ;
HELP: tensor>array
{ $values { "tensor" tensor } { "seq" array } }
{ $description "Returns " { $snippet "tensor" } " as an n-dimensional array." } ;
HELP: matmul
{ $values { "tensor1" tensor } { "tensor2" tensor } { "tensor3" tensor } }
{ $description "Performs n-dimensional matrix multiplication on two tensors, where " { $snippet "tensor1" }
" has shape " { $snippet "...xmxn" } " and " { $snippet "tensor1" } " has shape " { $snippet "...xnxp" } "." }
{ $errors "Throws a " { $link shape-mismatch-error } " if the bottom two "
"dimensions of the tensors passed do not take the form " { $snippet "mxn" }
" and " { $snippet "nxp" } " and/or the top dimensions do not match." } ;
HELP: transpose
{ $values { "tensor" tensor } { "tensor'" tensor } }
{ $description "Performs n-dimensional matrix transposition on " { $snippet "tens" } "." } ;
ABOUT: "tensors"