All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Label Encoder.
- Scatter Nd Operator.
- Compress Operator.
- Gather ND Operator.
- Reduce LogSum Operator
- Erf Operator
- Reduce Prod Operator
- Gather Elements Operator.
- Reduce Sum Square Operator.
- ReduceL2 operator.
- Reduce L1 Operator.
- Scatter Elements Operator.
- Implement
TreeRegressor
trait for decision tree regression.
- Added gather operator.
- Add FP64x64 and FP32x32 fixed points (from cubit library).
- Implement Tensor FP64x64 and FP3x32.
- Implement NN FP64x64 and FP3x32.
Refactored Orion to support generic types.
Refactored Loops to use match to break loops.
Use only LUTs for trigonometric functions.
- Concat for tensors with tests
- Added i8 tensor helper for tests.
- Onehot encoding for tensors with tests
Add FixedType implementation of NNTrait.
Refactored fixed point to use mag
of type u32.
Refactored all operators tests. Now an operator test can be writing in python in nodegen/node
directory. Then, the test and its data can be generated with scarb run nodegen name_of_the_node
. Generated tests are located in src/tests/nodes
.
- Added arccosine (acos) implementation and tests
- Removed check_gas()
- Refactored Perfomance trait to take two generic parameters:
T
, the type of the unquantized tensor. Currently supportFixedType
andi32
.Q
, the type of the quantized tensor. Currently supporti8
.
- Implement Tensor int8
- Implement NN int8
- Added DequantizeLinear operator
- Fixed docgen
- implement TensorSerde
- Added arcsin implementation and tests
- Added arctangent operator
- Add QuantizeLinear
- Added cosine implementation and tests
- Added acosh operator
- Added flatten operator
- Added asinh operator
- Added cosh operator
- Added tanh operator
- Added sinh operator
- Added cumsum operator
- Replace array.at with IndexView
- Added sine implementation and tests
- Refactor nn tests to cover n-dimensions
- Refactor tensor tests to cover n-dimensions
- Upgrade Cairo version to v2.0.0-rc
- Into trait to signed integers
- Updated argmax function parameters
- Restructured tests for argmax and argmin
- Added log functionality to tensor trait. Added Logsoftmax implementation for nn trait.
- Added tests for both.
- Added argmin tensor operator
- Remove the check range from the creation of a new fixed point, so that we can use fp for wide calculations. A future PR will restore the check range with a better design.
- Added ceil operator
- Fixed abs tensor operator doc
- Add fixed-point Q16.16 implementation
- Refactor operators and performance functions to support multiple fixed-point implementations.
- extra parameter to Tensor.
- Refactor fixed point to support multiple implementations
- Fix greater operator.
- Update compatibility.md
- Fix reduce_sum on 1D Tensor.
- Added greater tensor operator and tests
- Added less tensor operator and tests
- Added abs tensor operator and tests
- Added sigmoid operator and tests
- Added equality (element-wise) operator and tests
- Fixed imports to allow tests in linear_test.cairo work
- Added softsign implementation and tests
- Add Linear Quantization from FixedType Tensor
- Fix docgen.
- Replace Fixed Point Q5.26 with Q8.23
- Added softplus implementation and tests
- Remove unused variables.
- Renaming. Replace ONNX-Cairo with Orion.
- Updated relu u32 function to have a threshold parameter
- Updated relu test folder structure
- Added leaky relu
- Updated NN test folder structure
- Added range check to FixedType
- Added range check to FixedType
docgen
script to generate documentation from docstrings.
- NN and Performance modules to NNTrait and PerformanceTrait
- Added linear layer (dtype: Tensor, Tensor)
- Update code structure.
- Upgrade code to cairo alpha-v1.0.0-rc0:
- update syntax to fit with cairo alpha-v1.0.0-rc0
- refactor imports
- Added exponential element-wise operation
- Added softmax
- Broadcast operations (add/sub/mul/div)
- Implemented Fixed Point Q5.26
- Implemented Tensor with Fixed Type
- Remove duplicate files in docs.
- Removed Matrix and Vector types.
- Refactored functions to be Tensor-centric.
- Reorganize code structure.
- Temporarily remove softmax.
- Tensor
matmul
feature:- Implemented matrix multiplication for tensors.
- Behavior depends on the dimensionality of the tensors:
- 1D-1D: Returns the dot product.
- 2D-2D: Returns the matrix-matrix product.
- 1D-2D: Returns the matrix-vector product after temporarily prepending a 1 to the 1D tensor's dimension.
- 2D-1D: Returns the matrix-vector product.
- Matmul for more than 2D tensors is not supported.
- Tensor optimization and refactoring:
- Replaced
@Array
withSpan
for improved performance and compatibility. - Changed iteration method from
span.at()
tospan.pop_front()
for better efficiency. - No breaking changes or API changes introduced.
- Replaced
- Tensor code improvements and documentation updates:
- Added missing checks in the Tensor implementation for better robustness.
- Refactored the code to use Rust-style comments for better readability and consistency.
- Tensor reshape and transpose features:
- Implemented
tensor.reshape
for changing the shape of a tensor. - Implemented
tensor.transpose
according to the given axes permutation. - Provided descriptions for the new functions.
- Created unit tests for the new features.
- Implemented
- Refactored loop implementation:
- Replaced recursive functions with built-in loop expressions for better performance and readability.
- Changed the type of Tensor shape to
Span<usize>
for improved compatibility and efficiency. - Added alpha7 artifact.
- No breaking changes or API changes introduced.
- Refactored signed integer implementation:
- Improved compatibility with existing regimes (i8, i32, i64, i128).
- Implemented i8, i32, i64, i128 with magnitudes bounded by 2**(n-1).
- No breaking changes or API changes introduced.
- Tensor implementation in Cairo 1.0:
- Implemented TensorTrait.
- Added broadcast element-wise operations.
- Added reduce sum operation.
- Added argmax operation.
- Created unit tests for the new features.
- Replaced Vector and Matrix with Tensor object as an nd-array in the future (no breaking change in this release).
- Updated the behavior of the library to use the new Tensor object for enhanced functionality.
- Deprecated Vector and Matrix for future removal (no breaking change in this release).