GoProg

 
Топ хэштегов


Архив

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 #искусственныйинтеллект



Новый комментарий: