9

可以澄清一下协议缓冲区和协议之间的区别吗?谷歌搜索只显示协议缓冲区。我看到 protobuf-programming language-version 和 protoc-operating system-86_32 的命名约定是不同的。它们是不同的还是相同的?

使用 tensorflow 时是否需要同时安装两者?虽然

protoc --version

是 3.6 但我的点在抱怨

tensorflow-gpu 1.7.0 has requirement protobuf>=3.4.0, but you'll have protobuf 2.6.1 which is incompatible.
4

1 回答 1

12

“protobuf”或“protocol buffers”是序列化格式和/或相关工具的名称。

protoc是一个特定的 protobuf 工具,特别是 Google 的“.proto”解析器和代码生成器的实现(以及其他一些东西)

“.proto”是一种模式 DSL,用于描述您计划在应用程序中使用的消息 - 它是基于文本的。

通常的流程是:

  1. 为您的消息编写或获取 .proto
  2. 通过 protoc 或任何其他特定于库的生成器工具运行 .proto 以获取目标平台的消息类型
  3. 将这些生成的消息类型添加到您的应用程序
  4. 导入/引用与您选择的工具/平台匹配的 protobuf 库
  5. 建造

一些工具反过来工作,在您的平台上使用您自己的类型(“代码优先”而不是“合同优先”方法)

于 2018-08-16T07:31:46.603 回答