Documentation
¶
Overview ¶
Package tensor provides a multi-dimensional array (tensor) implementation.
Package tensor provides a multi-dimensional array (tensor) implementation.
Index ¶
- func AssertClose[T Numeric](t *testing.T, expected, actual *TensorNumeric[T], tolerance float64)
- func AssertEquals[T Numeric](t *testing.T, expected, actual *TensorNumeric[T])
- func BroadcastIndex(index int, shape, outputShape []int, broadcast bool) int
- func BroadcastShapes(a, b []int) (shape []int, broadcastA, broadcastB bool, err error)
- func ConvertInt64ToInt(s []int64) []int
- func ConvertIntToInt64(s []int) []int64
- func Equals[T Numeric](a, b *TensorNumeric[T]) bool
- func Float32ToBytes(f []float32) ([]byte, error)
- func Ones[T Numeric](size int) []T
- func Product(s []int) int
- func SameShape(a, b []int) bool
- func ShapesEqual(a, b []int) bool
- type Float
- type Numeric
- type Tensor
- type TensorNumeric
- func (t *TensorNumeric[T]) At(indices ...int) (T, error)
- func (t *TensorNumeric[T]) Bytes() ([]byte, error)
- func (t *TensorNumeric[T]) Copy() *TensorNumeric[T]
- func (t *TensorNumeric[T]) DType() reflect.Type
- func (t *TensorNumeric[T]) Data() []T
- func (t *TensorNumeric[T]) Dims() int
- func (t *TensorNumeric[T]) Each(fn func(T))
- func (t *TensorNumeric[T]) Reshape(newShape []int) (*TensorNumeric[T], error)
- func (t *TensorNumeric[T]) Set(value T, indices ...int) error
- func (t *TensorNumeric[T]) SetData(data []T)
- func (t *TensorNumeric[T]) SetShape(shape []int)
- func (t *TensorNumeric[T]) SetStrides(strides []int)
- func (t *TensorNumeric[T]) Shape() []int
- func (t *TensorNumeric[T]) ShapeEquals(other *TensorNumeric[T]) bool
- func (t *TensorNumeric[T]) Size() int
- func (t *TensorNumeric[T]) Slice(ranges ...[2]int) (*TensorNumeric[T], error)
- func (t *TensorNumeric[T]) Strides() []int
- func (t *TensorNumeric[T]) String() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertClose ¶ added in v0.2.0
func AssertClose[T Numeric](t *testing.T, expected, actual *TensorNumeric[T], tolerance float64)
AssertClose checks if two tensors are close enough and fails the test if they are not.
func AssertEquals ¶ added in v0.2.0
func AssertEquals[T Numeric](t *testing.T, expected, actual *TensorNumeric[T])
AssertEquals checks if two tensors are equal and fails the test if they are not.
func BroadcastIndex ¶
BroadcastIndex computes the index in the original tensor for a given index in the broadcasted tensor.
func BroadcastShapes ¶
BroadcastShapes computes the resulting shape of a broadcast operation between two shapes.
func ConvertInt64ToInt ¶ added in v0.2.0
ConvertInt64ToInt converts a slice of int64 to a slice of int.
func ConvertIntToInt64 ¶ added in v0.2.0
ConvertIntToInt64 converts a slice of int to a slice of int64.
func Equals ¶ added in v0.2.0
func Equals[T Numeric](a, b *TensorNumeric[T]) bool
Equals checks if two tensors are equal.
func Float32ToBytes ¶ added in v0.2.0
Float32ToBytes converts a float32 slice to a byte slice.
func ShapesEqual ¶ added in v0.2.0
ShapesEqual compares two shapes and returns true if they are equal.
Types ¶
type Numeric ¶
type Numeric interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 |
~uint | ~uint32 | ~uint64 |
~float32 | ~float64 |
float8.Float8 |
float16.Float16
}
Numeric defines the constraint for numeric types that can be used in Tensors.
type Tensor ¶
type Tensor interface {
Shape() []int
DType() reflect.Type
// contains filtered or unexported methods
}
Tensor is an interface that all concrete tensor types must implement. This allows the graph to be type-agnostic at a high level.
type TensorNumeric ¶ added in v0.2.0
type TensorNumeric[T Numeric] struct { // contains filtered or unexported fields }
TensorNumeric[T] represents an n-dimensional array of a generic numeric type T.
func New ¶
func New[T Numeric](shape []int, data []T) (*TensorNumeric[T], error)
New creates a new TensorNumeric with the given shape and initializes it with the provided data.
func NewFromBytes ¶ added in v0.2.0
func NewFromBytes[T Numeric](shape []int, data []byte) (*TensorNumeric[T], error)
NewFromBytes creates a new tensor from bytes data with the given shape.
func (*TensorNumeric[T]) At ¶ added in v0.2.0
func (t *TensorNumeric[T]) At(indices ...int) (T, error)
At retrieves the value at the specified indices. It returns an error if the number of indices does not match the tensor's dimensions or if any index is out of bounds.
func (*TensorNumeric[T]) Bytes ¶ added in v0.2.0
func (t *TensorNumeric[T]) Bytes() ([]byte, error)
Bytes returns the underlying data of the tensor as a byte slice.
func (*TensorNumeric[T]) Copy ¶ added in v0.2.0
func (t *TensorNumeric[T]) Copy() *TensorNumeric[T]
Copy creates a deep copy of the tensor.
func (*TensorNumeric[T]) DType ¶ added in v0.2.0
func (t *TensorNumeric[T]) DType() reflect.Type
DType returns the reflect.Type of the tensor's elements.
func (*TensorNumeric[T]) Data ¶ added in v0.2.0
func (t *TensorNumeric[T]) Data() []T
Data returns a slice representing the underlying data of the tensor. For views, this returns only the data visible through the view.
func (*TensorNumeric[T]) Dims ¶ added in v0.2.0
func (t *TensorNumeric[T]) Dims() int
Dims returns the number of dimensions of the tensor.
func (*TensorNumeric[T]) Each ¶ added in v0.2.0
func (t *TensorNumeric[T]) Each(fn func(T))
Each applies a function to each element of the tensor.
func (*TensorNumeric[T]) Reshape ¶ added in v0.2.0
func (t *TensorNumeric[T]) Reshape(newShape []int) (*TensorNumeric[T], error)
Reshape returns a new TensorNumeric with a different shape that shares the same underlying data. The new shape must have the same total number of elements as the original tensor. This operation is a "view" and does not copy the data.
func (*TensorNumeric[T]) Set ¶ added in v0.2.0
func (t *TensorNumeric[T]) Set(value T, indices ...int) error
Set updates the value at the specified indices. It returns an error if the number of indices does not match the tensor's dimensions, if any index is out of bounds, or if the tensor is a read-only view.
func (*TensorNumeric[T]) SetData ¶ added in v0.2.0
func (t *TensorNumeric[T]) SetData(data []T)
SetData sets the underlying data of the tensor.
func (*TensorNumeric[T]) SetShape ¶ added in v0.2.0
func (t *TensorNumeric[T]) SetShape(shape []int)
SetShape sets the tensor's shape.
func (*TensorNumeric[T]) SetStrides ¶ added in v0.2.0
func (t *TensorNumeric[T]) SetStrides(strides []int)
SetStrides sets the tensor's strides.
func (*TensorNumeric[T]) Shape ¶ added in v0.2.0
func (t *TensorNumeric[T]) Shape() []int
Shape returns a copy of the tensor's shape.
func (*TensorNumeric[T]) ShapeEquals ¶ added in v0.2.0
func (t *TensorNumeric[T]) ShapeEquals(other *TensorNumeric[T]) bool
ShapeEquals returns true if the shapes of two tensors are identical.
func (*TensorNumeric[T]) Size ¶ added in v0.2.0
func (t *TensorNumeric[T]) Size() int
Size returns the total number of elements in the tensor.
func (*TensorNumeric[T]) Slice ¶ added in v0.2.0
func (t *TensorNumeric[T]) Slice(ranges ...[2]int) (*TensorNumeric[T], error)
Slice creates a new TensorNumeric view for the specified range. A slice is defined by a start and end index for each dimension. The returned tensor shares the same underlying data.
func (*TensorNumeric[T]) Strides ¶ added in v0.2.0
func (t *TensorNumeric[T]) Strides() []int
Strides returns a copy of the tensor's strides.
func (*TensorNumeric[T]) String ¶ added in v0.2.0
func (t *TensorNumeric[T]) String() string
String returns a string representation of the tensor.