Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Spox makes it easy to construct ONNX models through clean and idiomatic Python code.
A common application of ONNX is converting models from various frameworks. This requires replicating their runtime behaviour with ONNX operators. In the past this has been a major challenge. Based on our experience, we designed Spox from the ground up to make the process of writing converters (and ONNX models in general) as easy as possible.
Spox's features include:
Spox releases are available on PyPI:
pip install spox
There is also a package available on conda-forge:
conda install spox
In Spox, you primarily interact with Var
objects - variables - which are placeholders for runtime values.
The initial Var
objects, which represent the arguments of a model (the model inputs in ONNX nomenclature), are created with an explicit type using the argument(Type) -> Var
function. The possible types include Tensor
, Sequence
, and Optional
.
All further Var
objects are created by calling functions which take existing Var
objects as inputs and produce new Var
objects as outputs. Spox determines the Var.type
for these eagerly to allow validation.
Spox provides such functions for all operators in the standard. They are grouped by domain and version in the spox.opset
submodule.
The final onnx.ModelProto
object is built by passing input and output Var
s for the model to the spox.build
function.
Below is an example for defining an ONNX graph which computes the geometric mean of two inputs. Make sure to consult the Spox documentation to find more details and tutorials.
import onnx
from spox import argument, build, Tensor, Var
# Import operators from the ai.onnx domain at version 17
from spox.opset.ai.onnx import v17 as op
def geometric_mean(x: Var, y: Var) -> Var:
# use the standard Sqrt and Mul
return op.sqrt(op.mul(x, y))
# Create typed model inputs. Each tensor is of rank 1
# and has the runtime-determined length 'N'.
a = argument(Tensor(float, ('N',)))
b = argument(Tensor(float, ('N',)))
# Perform operations on `Var`s
c = geometric_mean(a, b)
# Build an `onnx.ModelProto` for the given inputs and outputs.
model: onnx.ModelProto = build(inputs={'a': a, 'b': b}, outputs={'c': c})
Original designed and developed by @jbachurski with the supervision of @cbourjau.
FAQs
A framework for constructing ONNX computational graphs.
We found that spox demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.