我在安裝tensorflow (go語言)時,按照官方教程來,發現有錯誤,經過幾位外國友人的知道,解決問題,現貼出這個坑,供大家借鑑學習。
安裝tensorflow
這裏直接參考官方鏈接,記住,tensorflow的c語言版本也要安裝,才能使用,並且安裝位置最好使用教程裏的位置。
問題來了:
我們執行到這一步時:
go test github.com/tensorflow/tensorflow/tensorflow/go
提示我們找不到包:
cannot find package
"github.com/tensorflow/tensorflow/tensorflow/go/genop/internal/proto/github.com/tensorflow/tensorflow/tensorflow/go/core" in any of: /home/go/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/internal/proto/github.com/tensorflow/tensorflow/tensorflow/go/core (from $GOROOT)
/home/go_work/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/internal/proto/github.com/tensorflow/tensorflow/tensorflow/go/core (from $GOPATH)
仔細看竟然有兩層github的引用,並且去github也找不到這個文件。
解決辦法:
外國友人幫助我的鏈接(stackoverflow網站),下面是原文截圖:
下面我把需要我們執行的代碼拿出來(記住,C語言的tensorflow一定要安裝到官方教程中的指定位置):
cd $GOPATH/src/github.com/tensorflow/tensorflow/tensorflow/go
git checkout r1.11
go get github.com/tensorflow/tensorflow/tensorflow/go
下面是我執行成功的截圖:
下面是代碼(其實就是官方教程中的代碼)
package main
import (
tf "github.com/tensorflow/tensorflow/tensorflow/go"
"github.com/tensorflow/tensorflow/tensorflow/go/op"
"fmt"
)
func main() {
// Construct a graph with an operation that produces a string constant.
s := op.NewScope()
c := op.Const(s, "Hello from TensorFlow version " + tf.Version())
graph, err := s.Finalize()
if err != nil {
panic(err)
}
// Execute the graph in a session.
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())
}