构建Go版TensorFlow时framework_go_proto包缺失问题求助
解决Go版TensorFlow生成Ops包装函数时的包缺失问题
我之前也碰到过一模一样的问题!这个报错本质是生成Ops依赖的Go版TensorFlow protobuf文件还没被正确生成,或者路径配置出了问题。结合你的OS X、Go1.9.2、TensorFlow master分支、protoc3.5.1这些环境信息,咱们一步步来修复:
1. 先确认TensorFlow源码的本地路径是否正确
Go1.9还在使用GOPATH模式,所以必须保证TensorFlow源码放在正确的路径下:
- 先检查你的GOPATH路径,执行:
echo $GOPATH - 确认TensorFlow源码在
$GOPATH/src/github.com/tensorflow/tensorflow这个位置,如果不在,重新克隆或者移动源码到该路径:git clone https://github.com/tensorflow/tensorflow.git $GOPATH/src/github.com/tensorflow/tensorflow
2. 手动生成缺失的protobuf文件
报错里提到的framework_go_proto包是需要用protoc从TensorFlow原生proto文件生成的,咱们手动执行生成步骤:
- 进入TensorFlow核心proto文件所在目录:
cd $GOPATH/src/github.com/tensorflow/tensorflow/tensorflow/core - 用protoc生成对应的Go代码,指定输出到报错提示的缺失路径:
这个命令会把framework和protobuf目录下的所有proto文件转换成Go代码,放到protoc --go_out=../../go/genop/internal/proto tensorflow/core/framework/*.proto tensorflow/core/protobuf/*.protogenop/internal/proto目录里,补上缺失的包。
3. 确认protoc版本是否正确生效
虽然你说用的是3.5.1,但还是要检查当前终端里的protoc版本是否匹配:
protoc --version
如果输出不是3.5.1,说明系统里可能有旧版本的protoc,需要把正确版本的路径放到PATH最前面,比如:
export PATH=/你的protoc安装路径/protoc-3.5.1/bin:$PATH
4. 重新执行go generate命令
完成上面的步骤后,回到终端执行:
go generate github.com/tensorflow/tensorflow/tensorflow/go/op
这次应该就能顺利生成Ops的包装函数了。
另外补充个小建议:Go1.9版本比较老,虽然TensorFlow master分支理论上兼容,但如果还是有问题,可以尝试切换到TensorFlow的稳定分支(比如r1.15),再重复上面的步骤,兼容性会更好。
内容的提问来源于stack exchange,提问作者ms ghotra
相关产品推荐
相关产品推荐

