安装 Golang 版 TensorFlow (Windows平台)
官方教程一句话,报错一查全不知。
1. 下载代码
go get -d -v github.com/tensorflow/tensorflow/tensorflow/go
2. 下载所需依赖
下载protoc并解压至GOPATH(其他地方也可以,但是需要确定已经加入PATH环境变量)
protoc需要3.x以上版本
下载libtensorflow并解压到当前目录(其他地方也可以,但是后面的PROTOC参数也要跟对应的改)
libtensorflow 就是 TensorFlow Go 软件包所需的 TensorFlow C 库。
这里以libtensorflow-cpu-windows-x86_64-1.14.0.zip为例。
具体可用版本号可以在 这里 查找
其他版本的可以按格式自由组合https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-{cpu/gpu}-{windows/linux/darwin}-x86_64-{1.14.0/1.15.0/等等}.zip
3. 配置依赖(重要)
首先配置环境变量:
键 | 值 |
---|---|
LIBRARY_PATH | 原值+libtensorflow/lib |
PATH | 原值+LIBRARY_PATH |
CMD(临时使用):
rem 配置依赖库
set LIBRARY_PATH=%cd%\lib
set PATH=%PATH%;%%LIBRARY_PATH%%
PowerShell(临时使用):
$env:LIBRARY_PATH="F:\Download\tensorflow\lib"
$env:PATH=$env:PATH+";"+$env:LIBRARY_PATH
打开文件%GOPATH%/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/generate.sh
在第25行(内容为:fi)后添加:
# 修改GOPATH路径
PWDHOME=$(pwd)
GOPATH=${GOPATH//\\/\/}
GOPATH=/${GOPATH//:/}
echo ${PWDHOME}
echo ${GOPATH}
cd ${GOPATH}/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/
在第57行(内容为:fi)后添加:
# 修改PROTOC参数,引入libtensorflow的include文件
PROTOC="${PROTOC} -I ${PWDHOME}/include"
echo ${PROTOC}
注:关于generate.sh文件的修改已经提交pr
然后执行生成所需文件
CMD:
bash %GOPATH%/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/generate.sh
PowerShell:
bash $env:GOPATH/src/github.com/tensorflow/tensorflow/tensorflow/go/genop/generate.sh
注:该步骤实际上是拆分了go generate那一步,不编译c库的话go generate不需要全部执行。
4. 测试框架
# 运行测试
go test github.com/tensorflow/tensorflow/tensorflow/go
错误记录
※ fatal: not a git repository (or any of the parent directories): .git
清空%GOPATH%/src/github.com/tensorflow/tensorflow/,然后重试
※ cannot find package "github.com/tensorflow/tensorflow/tensorflow/go/core/core_protos_go_proto"
不可以直接执行go install或者go get,请参考[1. 下载代码]
※ error:inconsistent package import paths: allocation_description_go_proto api_def_go_proto
windows路径没有正确转换为linux路径,请参考[3. 配置依赖(重要)] ,修改generate.sh文件
※ Cannot convert path "" to or from windows style
windows路径没有正确转换为linux路径,请参考[3. 配置依赖(重要)] ,修改generate.sh文件
※ cannot find -ltensorflow collect2.exe: error: ld returned 1 exit status
说明依赖库没有正确配置,将tensorflow.lib添加到PATH环境变量即可。
※ exit status 3221225781
说明依赖库没有正确配置,将tensorflow.dll添加到PATH环境变量即可。
※ exit status 3221225794
原本意思是:应用程序无法正确初始化。该任务被配置为在系统帐户下运行,因此应该具有运行该批处理脚本所需的所有权限。
但是在这里,它意味着你的CPU不支持所需的指令集。1.5及以下没有强制要求;1.6-2.1(当前最新)需要AVX指令集。
正如发行说明中所宣布的那样,TensorFlow发行版本1.6和更高版本的二进制文件是使用AVX指令集预先构建的。这意味着在没有这些指令集的任何CPU上,CPU或GPU版本的TF将无法加载,并出现以下任何错误:ImportError: DLL load failed
参考资料:
安装 Go 版 TensorFlow
TensorFlow in Go
TensorFlow issues
Common program exit codes and error levels
大佬,我想请教你windows10部署go-opencv-tensorflow开发环境,我搞了好久都没搞定,各种问题,如果方便的话麻烦加我QQ,见邮箱,谢谢!