Documentation ¶
Overview ¶
Package infer provides functions and utilities for running inferences on TensorFlow models.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrValidInputOutputRequired occurs if an invalid Input or Output is provided. ErrValidInputOutputRequired = errors.New("a valid Input/Output is required") )
Functions ¶
This section is empty.
Types ¶
type ImageOptions ¶
type ImageOptions struct { // IsGray represents whether the Model expects the input image // to be grayscale or not. Specifically, whether the image has // 3 channels or 1 channel. IsGray bool }
ImageOptions represent configurable options when evaluating images. Note: for now it is sparse, but included to keep the method signature consistent as new options become available.
type Input ¶
type Input struct { // Key represents a layer in a TensorFlow model. The selection of a Key // determines "where" the Input/Output occurs in the Graph. Key string // Dimensions represents the size of the input. It can be of any type but // must contains the values expected by the layer. It may be used to // augment or resize the input so that it conforms to the specified layer. Dimensions interface{} }
Input is an ML layer. It is identified by a key and has dimensions The dimensions are used to augment or resize the output as appropriate.
type Model ¶
Model is an ML model. It's composed of a computation graph and an Input and Output. It provides methods for running inferences usnig it's Graph, abiding by it's Input/Output.
func New ¶
New returns a new Model.
Example ¶
package main import ( "bytes" "io/ioutil" "github.com/sjkaliski/infer" tf "github.com/tensorflow/tensorflow/tensorflow/go" ) var m *infer.Model func main() { model, err := ioutil.ReadFile("/path/to/model.pb") if err != nil { panic(err) } graph := tf.NewGraph() err = graph.Import(model, "") if err != nil { panic(err) } m, _ = infer.New(&infer.Model{ Graph: graph, Input: &infer.Input{ Key: "input", Dimensions: []int32{100, 100}, }, Output: &infer.Output{ Key: "output", }, }) }
Output:
func (*Model) FromImage ¶
func (m *Model) FromImage(r io.Reader, opts *ImageOptions) ([]*Prediction, error)
FromImage evaluates an image.
Example ¶
package main import ( "bytes" "log" "github.com/sjkaliski/infer" ) var ( m *infer.Model buf bytes.Buffer ) func main() { results, err := m.FromImage(&buf, &infer.ImageOptions{ IsGray: false, }) if err != nil { panic(err) } log.Println(results) }
Output:
func (*Model) FromImageWithContext ¶
func (m *Model) FromImageWithContext(ctx context.Context, r io.Reader, opts *ImageOptions) ([]*Prediction, error)
FromImageWithContext evaluates an image with context. Optional ImageOptions can be included to dictate the pre-processing of the input image. The method returns an interface of results which can be cast to the appropriate type.
type Output ¶
type Output struct { // Key represents a layer in a TensorFlow model. The selection of a Key // determines "where" the Input/Output occurs in the Graph. Key string // Dimensions represents the size of the input. It can be of any type but // must contains the values expected by the layer. It may be used to // augment or resize the input so that it conforms to the specified layer. Dimensions interface{} }
Output is an ML layer. It is identified by a key and has dimensions The dimensions are used to augment or resize the output as appropriate.
type Prediction ¶
type Prediction struct { Class interface{} Score float32 }
Prediction represents a class and it's associated score.
type Predictions ¶
type Predictions []*Prediction
Predictions is a list of Prediction.
func (Predictions) Len ¶
func (ps Predictions) Len() int
func (Predictions) Less ¶
func (ps Predictions) Less(i, j int) bool
func (Predictions) Swap ¶
func (ps Predictions) Swap(i, j int)