gp

package module
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2021 License: MIT Imports: 2 Imported by: 0

README

gp

go predict with tensorflow, pytorch and others

Env

work well in

  • go 1.16+
  • os: x86_64, Ubuntu 14.04+ | MacOS
  • Tensorflow C API: 2.3.0
  • github.com/tensorflow/tensorflow v2.1.3 or v2.1.4

Tensorflow

Ref
Go API

https://www.tensorflow.org/install/lang_go

C Lib
#export LIB_TENSORFLOW_FILE=libtensorflow-cpu-darwin-x86_64-2.3.0.tar.gz
export LIB_TENSORFLOW_FILE=libtensorflow-cpu-linux-x86_64-2.3.0.tar.gz
Standard Install
tar -C /usr/local -xzf ${LIB_TENSORFLOW_FILE}
# linux
ldconfig

# macos 11.2.2+ work well
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
Non Sys Dir Install
export LIB_TENSORFLOW_INSTALL_DIR=~/mydir
tar -C ${LIB_TENSORFLOW_INSTALL_DIR} -xzf ${LIB_TENSORFLOW_FILE}

# config linker
export LIBRARY_PATH=$LIBRARY_PATH:${LIB_TENSORFLOW_INSTALL_DIR}/lib # For both Linux and macOS X
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${LIB_TENSORFLOW_INSTALL_DIR}/lib # For Linux only
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${LIB_TENSORFLOW_INSTALL_DIR}/lib # For macOS X only
C Lib Check
#include <stdio.h>
#include <tensorflow/c/c_api.h>

int main() {
  printf("Hello from TensorFlow C library version %s\n", TF_Version());
  return 0;
}
  • gcc hello_tf.c -ltensorflow -o hello_tf
  • ./hello_tf
Go Usage

go get github.com/xwi88/gp

Example
# register model
RegisterTFModelWithParamName(modelName, exportDir, tags, []string{"param_name_input"}, "param_name_output")

# predict.go
# get model
GetModel(modelName)
# predict with the special model
output, err := Predict(modelName, input ...interface{})
Params Look Up
  • pip install tensorflow
  • saved_model_cli show --all --dir output/keras
Docker Images

tf version now will be ok in: macos & ubuntu16.04

image repos target notes
v8fg/ubuntu:22.04-go1.17.4-tf-cpu build
v8fg/ubuntu:22.04-tf-cpu run
v8fg/ubuntu:16.04-go1.16-tf-cpu build
v8fg/ubuntu:16.04-tf-cpu run

Quick run in local

wget https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-darwin-x86_64-2.3.0.tar.gz
export LIB_TENSORFLOW_FILE=libtensorflow-cpu-darwin-x86_64-2.3.0.tar.gz
tar -C /usr/local -xzf ${LIB_TENSORFLOW_FILE}

# ll /usr/local/lib/libtensorflow*

-r-xr-xr-x  1 root  wheel   331M Jan  1  2000 /usr/local/lib/libtensorflow.2.3.0.dylib
lrwxr-xr-x  1 root  wheel    25B Jan  1  2000 /usr/local/lib/libtensorflow.2.dylib -> libtensorflow.2.3.0.dylib
lrwxr-xr-x  1 root  wheel    21B Jan  1  2000 /usr/local/lib/libtensorflow.dylib -> libtensorflow.2.dylib
-r-xr-xr-x  1 root  wheel    28M Jan  1  2000 /usr/local/lib/libtensorflow_framework.2.3.0.dylib
lrwxr-xr-x  1 root  wheel    35B Jan  1  2000 /usr/local/lib/libtensorflow_framework.2.dylib -> libtensorflow_framework.2.3.0.dylib
lrwxr-xr-x  1 root  wheel    31B Jan  1  2000 /usr/local/lib/libtensorflow_framework.dylib -> libtensorflow_framework.2.dylib

# ll /usr/local/include/tensorflow/*

-r-xr-xr-x  1 root  wheel    77K Jan  1  2000 c_api.h
-r-xr-xr-x  1 root  wheel    13K Jan  1  2000 c_api_experimental.h
drwxr-xr-x  5 root  wheel   160B Jun 11 00:24 eager
-r-xr-xr-x  1 root  wheel   2.4K Jan  1  2000 tensor_interface.h
-r-xr-xr-x  1 root  wheel   1.2K Jan  1  2000 tf_attrtype.h
-r-xr-xr-x  1 root  wheel   2.7K Jan  1  2000 tf_datatype.h
-r-xr-xr-x  1 root  wheel   1.2K Jan  1  2000 tf_file_statistics.h
-r-xr-xr-x  1 root  wheel   3.0K Jan  1  2000 tf_status.h
-r-xr-xr-x  1 root  wheel   7.4K Jan  1  2000 tf_tensor.h

Tips

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DestructModel

func DestructModel()

DestructModel release model memory

func Predict

func Predict(name string, input []interface{}) (output interface{}, err error)

Predict give predict val with model name and input data set

func RegisterTFModel

func RegisterTFModel(name, path string, tags []string) bool

RegisterTFModel register TFModel with default input and output param key

func RegisterTFModelWithParamName

func RegisterTFModelWithParamName(name, path string, tags, inputParamKey []string, outputParamKey string) bool

RegisterTFModelWithParamName register TFModel with input and output param key

func Reload

func Reload(name string) error

Reload model by name

Types

type Model

type Model interface {
	Load() error
	Predict([]interface{}) (interface{}, error) // input interface slice; output as the same
	Destruct() error
}

func GetModel

func GetModel(name string) Model

GetModel get model by model name

type ModelOptions

type ModelOptions struct {
}

ModelOptions used to register and config the model

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL