
TensorFlow — это ML-framework от Google, который предназначен для проектирования, создания и изучения моделей глубокого обучения. Вы можете использовать TensorFlow, чтобы производить численные вычисления. Само по себе это не кажется специфичным, однако эти вычисления производятся с помощью data-flow графов. В этих графах, вершины представляют собой математические операции, в то время как ребра представляют собой данные, которые обычно представляются в виде многомерных массивов или тензоров, которые сообщаются между этими ребрами.
TensorFlow написан на Си. Подключение к другим языкам осуществляется через биндинги. Поэтому для работы с TensorFlow в систему должна быть установлена Си-библиотека. Существует 64-битная версия версии для Linux (CPU и GPU) и для MacOS.
Для установки в систему нужно будет распаковать архив в /usr/local/lib или в другую директории (надо не забыть добавить ее в LD_LIBRARY_PATH).
sudo tar -xz libtensorflow.tar.gz -C /usr/local
Устанавливаем биндинг для Golang со всеми зависимостями:
go get github.com/tensorflow/tensorflow/tensorflow/go
Проверяем работу инсталляции:
go test github.com/tensorflow/tensorflow/tensorflow/go
Пробуем получить версию библиотеки TensorFlow на Go
package main
import (
"fmt"
tf "github.com/tensorflow/tensorflow/tensorflow/go"
"github.com/tensorflow/tensorflow/tensorflow/go/op"
)
func main() {
// создаем граф с одной строковой константой
s := op.NewScope()
c := op.Const(s, "Hello from TensorFlow version " + tf.Version())
graph, err := s.Finalize()
if err != nil {
panic(err)
}
// выполняем вычисления в сессии
sess, err := tf.NewSession(graph, nil)
if err != nil {
panic(err)
}
output, err := sess.Run(nil, []tf.Output{c}, nil)
if err != nil {
panic(err)
}
fmt.Println(output[0].Value())
}
В случае успеха получим
Hello from TensorFlow version 1.11.0
Теперь можно приступить к более сложным вещам, таким как обработка текстов или изображений. Примером распознавания изображений служит библиотека tinrab/go-tensorflow-image-recognition доступная на GitHub под MIT лицензией.
Установим ее и соберем Docker образ:
git clone git@github.com:tinrab/go-tensorflow-image-recognition.git
cd go-tensorflow-image-recognition
docker build -t localhost/recognition .
После чего запустим его из докера:
docker run -p 8080:8080 --rm localhost/recognition
Отправим запрос с котиком на распознавание:
curl localhost:8080/recognize -F 'image=@./cat.jpg'
На что получим ответ:
{
"filename": "cat.jpg",
"labels": [
{ "label": "tabby", "probability": 0.45087516 },
{ "label": "Egyptian cat", "probability": 0.26096493 },
{ "label": "tiger cat", "probability": 0.23208225 },
{ "label": "lynx", "probability": 0.050698064 },
{ "label": "grey fox", "probability": 0.0019019963 }
]
}
#AI #Go #golang #imagerecognition #IT #ML #tensorflow #искусственныйинтеллект