我是 protobuf 的新手,所以我不知道如何正确地提出问题。
无论如何,我正在使用这个模型配置原型文件。我使用Protocol Buffer pageprotoc -I=. --python_out=. ./model_server_config.proto
中的这个命令将它转换成 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 模型服务器配置来说是不可接受的。
关于如何将其正确写入文件的任何想法?还是我错误地创建了整个对象?欢迎任何帮助,在此先感谢。
慕妹3146593
相关分类