onnx-go

onnx-go gives the ability to import a pre-trained neural network within Go without being linked to a framework or library.


GoDoc

About

This package contains utilities for testing a backend.

Test cases are described thanks to this structure

type TestCase struct {
	Title          string
	ModelB         []byte
	Input          []tensor.Tensor
	ExpectedOutput []tensor.Tensor
}

The structure own a method that genererate a test function suitable to run through T.Run()

func (tc *TestCase) RunTest(b backend.ComputationBackend, parallel bool) func(t *testing.T) {

A test for a certain OpType can be registered with the following command:

func Register(optype, testTitle string, constructor func() *TestCase)

Usage in your backend implementation

Here is an example of a test for the Convolution Operator.

Register the tests from ONNX:

_ "github.com/owulveryck/onnx-go/backend/testbackend/onnx"
func(t *testing.T) {
		for _, tc := range testbackend.GetOpTypeTests("Conv") {
			tc := tc // capture range variable
			t.Run(tc().GetInfo(), tc().RunTest(backend, false))
		}
	}

Tests from ONNX

Test files have been autogenerated from the ONNX tests data and are exposed via a seperate package.

A void import of the package register all the tests that are accessible through a call to the function GetOpTypeTests

_ "github.com/owulveryck/onnx-go/backend/testbackend/onnx"
func GetOpTypeTests(optype string) []func() *TestCase {