我是 protobuf 的新手,所以我不知道如何正确地提出问题。
无论如何,我正在使用这个模型配置原型文件。protoc -I=. --python_out=. ./model_server_config.proto
我使用Protocol Buffer page中的此命令将其转换为 python 。现在我有一些可以导入和处理的 python 文件。我的目标是创建一个文件(用于运行具有多个模型的 TensorFlow 模型服务器),该文件应如下所示:
model_config_list: {
config: {
name: "name1",
base_path: "path1",
model_platform: "tensorflow"
},
config: {
name: "name2",
base_path: "path2",
model_platform: "tensorflow"
},
config: {
name: "name3",
base_path: "path3",
model_platform: "tensorflow"
},
}
现在使用编译的python包,我制作了一个protobuf对象,当我打印出来时它看起来像这样:
model_config_list {
config {
name: "name1"
base_path: "path1"
model_platform: "tensorflow"
}
config {
name: "name2"
base_path: "path2"
model_platform: "tensorflow"
}
config {
name: "name3"
base_path: "path3"
model_platform: "tensorflow"
}
}
但是在使用 序列化对象时objectname.SerializeToString()
,我得到一个奇怪的输出:
b'\n\x94\x01\n \n\x04name1\x12\x0cpath1"\ntensorflow\n7\n\x08name2\x12\x1fpath2"\ntensorflow\n7\n\x08name3\x12\x1fpath3"\ntensorflow'
我也尝试使用 python 的 protobuf 将其转换为 Json,如下所示:
from google.protobuf.json_format import MessageToJson
MessageToJson(objectname)
这给了我这样的结果:
{
"modelConfigList": {
"config": [
{
"name": "name1",
"basePath": "path1",
"modelPlatform": "tensorflow"
},
{
"name": "name2",
"basePath": "path2",
"modelPlatform": "tensorflow"
},
{
"name": "name3",
"basePath": "path3",
"modelPlatform": "tensorflow"
}
]
}
}
将列表中的所有对象和每个对象作为字符串,这对于 TensorFlow 模型服务器配置是不可接受的。
关于如何正确将其写入文件的任何想法?还是我错误地创建了整个对象?欢迎任何帮助,在此先感谢。