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 Int8ToBytes(i []int8) ([]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
- func Uint8ToBytes(u []uint8) ([]byte, error)
- type Addable
- type Float
- type Numeric
- type Tensor
- type TensorBool
- 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
- type TensorString
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertClose ¶ added in v0.3.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.3.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.3.0
ConvertInt64ToInt converts a slice of int64 to a slice of int.
func ConvertIntToInt64 ¶ added in v0.3.0
ConvertIntToInt64 converts a slice of int to a slice of int64.
func Equals ¶ added in v0.3.0
func Equals[T Numeric](a, b *TensorNumeric[T]) bool
Equals checks if two tensors are equal.
func Float32ToBytes ¶ added in v0.3.0
Float32ToBytes converts a float32 slice to a byte slice.
func Int8ToBytes ¶ added in v0.3.0
Int8ToBytes converts an int8 slice to a byte slice.
func ShapesEqual ¶ added in v0.3.0
ShapesEqual compares two shapes and returns true if they are equal.
func Uint8ToBytes ¶ added in v0.3.0
Uint8ToBytes converts a uint8 slice to a byte slice.
Types ¶
type Addable ¶ added in v0.3.0
type Addable interface { ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint32 | ~uint64 | ~float32 | ~float64 }
Addable defines the constraint for numeric types that support the built-in arithmetic operators directly (e.g., +, -, *, /) and zero literals. This intentionally excludes custom minifloat types like float8.Float8, float16.Float16, and float16.BFloat16, which are defined types that do not support Go's built-in operators without explicit conversion helpers.
type Numeric ¶
type Numeric interface { ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | uint8 | ~uint32 | ~uint64 | ~float32 | ~float64 | float8.Float8 | float16.Float16 | float16.BFloat16 }
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 TensorBool ¶ added in v0.3.0
type TensorBool struct {
// contains filtered or unexported fields
}
TensorBool represents an n-dimensional array of booleans.
func NewBool ¶ added in v0.3.0
func NewBool(shape []int, data []bool) (*TensorBool, error)
NewBool creates a new TensorBool with the given shape and initializes it with the provided data.
func (*TensorBool) Bytes ¶ added in v0.3.0
func (t *TensorBool) Bytes() ([]byte, error)
Bytes returns the underlying data of the tensor as a byte slice.
func (*TensorBool) DType ¶ added in v0.3.0
func (t *TensorBool) DType() reflect.Type
DType returns the reflect.Type of the tensor's elements.
func (*TensorBool) Data ¶ added in v0.3.0
func (t *TensorBool) Data() []bool
Data returns a slice representing the underlying data of the tensor.
func (*TensorBool) Shape ¶ added in v0.3.0
func (t *TensorBool) Shape() []int
Shape returns a copy of the tensor's shape.
type TensorNumeric ¶ added in v0.3.0
type TensorNumeric[T Numeric] struct { // contains filtered or unexported fields }
TensorNumeric represents an n-dimensional array of a generic numeric type T.
Note: The name includes the package term "Tensor" which may appear as stutter (tensor.TensorNumeric). This is intentional for clarity and API stability.
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.3.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.3.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.3.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.3.0
func (t *TensorNumeric[T]) Copy() *TensorNumeric[T]
Copy creates a deep copy of the tensor.
func (*TensorNumeric[T]) DType ¶ added in v0.3.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.3.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.3.0
func (t *TensorNumeric[T]) Dims() int
Dims returns the number of dimensions of the tensor.
func (*TensorNumeric[T]) Each ¶ added in v0.3.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.3.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.3.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.3.0
func (t *TensorNumeric[T]) SetData(data []T)
SetData sets the underlying data of the tensor.
func (*TensorNumeric[T]) SetShape ¶ added in v0.3.0
func (t *TensorNumeric[T]) SetShape(shape []int)
SetShape sets the tensor's shape.
func (*TensorNumeric[T]) SetStrides ¶ added in v0.3.0
func (t *TensorNumeric[T]) SetStrides(strides []int)
SetStrides sets the tensor's strides.
func (*TensorNumeric[T]) Shape ¶ added in v0.3.0
func (t *TensorNumeric[T]) Shape() []int
Shape returns a copy of the tensor's shape.
func (*TensorNumeric[T]) ShapeEquals ¶ added in v0.3.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.3.0
func (t *TensorNumeric[T]) Size() int
Size returns the total number of elements in the tensor.
func (*TensorNumeric[T]) Slice ¶ added in v0.3.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.3.0
func (t *TensorNumeric[T]) Strides() []int
Strides returns a copy of the tensor's strides.
func (*TensorNumeric[T]) String ¶ added in v0.3.0
func (t *TensorNumeric[T]) String() string
String returns a string representation of the tensor.
type TensorString ¶ added in v0.3.0
type TensorString struct {
// contains filtered or unexported fields
}
TensorString represents an n-dimensional array of strings.
func NewString ¶ added in v0.3.0
func NewString(shape []int, data []string) (*TensorString, error)
NewString creates a new TensorString with the given shape and initializes it with the provided data.
func (*TensorString) DType ¶ added in v0.3.0
func (t *TensorString) DType() reflect.Type
DType returns the reflect.Type of the tensor's elements.
func (*TensorString) Data ¶ added in v0.3.0
func (t *TensorString) Data() []string
Data returns a slice representing the underlying data of the tensor.
func (*TensorString) Shape ¶ added in v0.3.0
func (t *TensorString) Shape() []int
Shape returns a copy of the tensor's shape.