go版tensorflow安装教程详解

 更新时间:2020年12月08日 10:37:36   作者:Bungula  
这篇文章主要介绍了go版tensorflow安装教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

此文章基于ubuntu16.04

先在这里贴上官方教程
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/go

注意 安装go版的tensorflow时一定要先安装C版tensorflow且要部署好go语言

c版tensorflow官方教程
(Go 版本 TensorFlow 依赖于 TensorFlow C 语言库)
按照官方的指导就可以,没什么坑,最好是官方指定位置,否则后面可能会有坑!

安好后执行这个命令

go get -d github.com/tensorflow/tensorflow/tensorflow/go

可能会出现go get 找不到 google.golang.org/protobuf/×××××××××× 这类问题

此时我们可以使用git clone命令,执行如下代码“https://github.com/protocolbuffers/protobuf-go.git”,将下载内容放入protobuf文件夹中,即把下载下来中的内容全部替换到出问题的protobuf目录,这可能是之前代码换地址导致的问题

执行如下命令(下载下来后记得把文件替换,或者直接改名字把protobuf-go改成protobuf换目录)
git clone https://github.com/protocolbuffers/protobuf-go.git

如果找不到相应的目录可以用如下命令获取

 git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

 git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net

 git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text

 go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

 git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto

如果找不到包

"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)

此时我们可以执行以下命令尝试解决问题

cd $GOPATH/src/github.com/tensorflow/tensorflow/tensorflow/go
  
 git checkout r1.11
  
 go get github.com/tensorflow/tensorflow/tensorflow/go

也可以在 StackOverflow 上通过搜索和提问来获取可能的解决方法。

如果go get成功 即不报错,可用如下命令测试

go test github.com/tensorflow/tensorflow/tensorflow/go

Hello World


安装完 Go 版本 TensorFlow 之后,在 hello_tf.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())
}

通过调用下面的命令来运行 hello_tf.go:

go run hello_tf.go
Hello from TensorFlow version number

这个程序可能会输出类似下面的警告信息,你可以忽略它们:

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library
wasn't compiled to use *Type* instructions, but these are available on your
machine and could speed up CPU computations.

参考

[1]: https://blog.csdn.net/jj546630576/article/details/88179569
[2]: https://www.cnblogs.com/personblog/p/13084723.html
[3]: https://blog.csdn.net/qq_38431572/article/details/103671986

到此这篇关于go版tensorflow安装教程详解的文章就介绍到这了,更多相关go安装tensorflow内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Go语言中init的使用与常见应用场景

    详解Go语言中init的使用与常见应用场景

    Go 中有一个特别的 init() 函数,它主要用于包的初始化,这篇文章将以此为主题介绍 Go 中 init() 函数的使用和常见使用场景,希望对大家有所帮助
    2024-02-02
  • golang文件读取-按指定BUFF大小读取方式

    golang文件读取-按指定BUFF大小读取方式

    这篇文章主要介绍了golang文件读取-按指定BUFF大小读取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • golang默认Logger日志库在项目中使用Zap日志库

    golang默认Logger日志库在项目中使用Zap日志库

    这篇文章主要为大家介绍了golang默认Logger日志库在项目中使用Zap日志库,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • GoLang的sync.WaitGroup与sync.Once简单使用讲解

    GoLang的sync.WaitGroup与sync.Once简单使用讲解

    sync.WaitGroup类型,它比通道更加适合实现这种一对多的goroutine协作流程。WaitGroup是开箱即用的,也是并发安全的。同时,与之前提到的同步工具一样,它一旦被真正的使用就不能被复制了
    2023-01-01
  • golang中定时器cpu使用率高的现象详析

    golang中定时器cpu使用率高的现象详析

    这篇文章主要给大家介绍了关于golang中定时器cpu使用率高的现象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • golang 占位符和fmt常见输出介绍

    golang 占位符和fmt常见输出介绍

    这篇文章主要介绍了golang 占位符和fmt常见输出介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言并发爬虫的具体实现

    Go语言并发爬虫的具体实现

    本文主要介绍了Go语言并发爬虫的具体实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Go使用缓存加速外部资源访问提高性能效率

    Go使用缓存加速外部资源访问提高性能效率

    缓存是架构设计中的常用概念,本文基于Go实现了一个简单的缓存组件,支持最基本的缓存操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Go语言中的init函数特点及用法详解

    Go语言中的init函数特点及用法详解

    在Go语言中,init()函数是一种特殊的函数,用于在程序启动时自动执行一次。它的存在为我们提供了一种机制,可以在程序启动时进行一些必要的初始化操作,为程序的正常运行做好准备,在这篇文章中,我们将详细探讨init()函数的特点、用途和注意事项
    2023-06-06
  • 彻底理解golang中什么是nil

    彻底理解golang中什么是nil

    这篇文章主要介绍了golang中的nil用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04

最新评论