C++ 如何使用protobuf序列化元组(std::string,torch::Tensor)的libtorch向量?

C++ 如何使用protobuf序列化元组(std::string,torch::Tensor)的libtorch向量?,c++,protocol-buffers,tensor,libtorch,C++,Protocol Buffers,Tensor,Libtorch,我应该如何定义ProtoBuf模式,以便序列化此形状向量 std::vector<std::tuple(std::string, torch::Tensor)> std::vector 我所能找到的只是一些简单的例子。我不知道应该如何定义ProtoBuf模式中的torch::Tensor或tuple 您可以使用string在ProtoBuf模式中表示torch::Tensor 例如: syntax=“proto3”; 包张量; 消息查找{ 消息元组{ 字符串键=1; 弦张量=2;

我应该如何定义ProtoBuf模式,以便序列化此形状向量

std::vector<std::tuple(std::string, torch::Tensor)>
std::vector
我所能找到的只是一些简单的例子。我不知道应该如何定义ProtoBuf模式中的
torch::Tensor
tuple

您可以使用
string
在ProtoBuf模式中表示
torch::Tensor

例如:

syntax=“proto3”;
包张量;
消息查找{
消息元组{
字符串键=1;
弦张量=2;
}
重复元组=1;
}

使用
torch::save()
torch::load()
API,通过
std::stringstream
转换到
std::string

查看此线程:。一个解决方案是使用
std::stringstream
torch::save()
)将其转换为
std::string
),将其序列化为字符串,然后从其加载并转换回
torch::Tensor
torch::load()
)@Azeem非常感谢。但我需要将它们序列化为一个元组,而不仅仅是一个元组!好吧,在ProroBuf中,你会把它们结合在一起作为一个信息,对吗?请使用您的
.proto
定义更新您的问题,这将有助于理解您是如何将其可视化的。消息中的
键看起来您需要一个。示例:
map lookup=1
其中key是string,value
torch::Tensor
也是由
torch::save()
生成的字符串。您可以只使用
torch::Tensor
的字符串表示形式。
map
类似于
std::unordered\u map
。这是一个自定义实现。请参阅其API。对于重复的键,您可以使用如下内容:。您好,我应该如何添加到查找中?似乎它没有任何设置或添加方法!它提供的唯一add方法不接受任何参数!及其
添加元组
!好的,明白了。我首先必须从元组创建一个新的元组对象,然后更新元组!:<编码>张量::元组向量;自动记录=vec.add_tuples();记录。设置_键(“键”);记录。设置张量(“张量”)这样,vec就充满了!如果你问我的话,这很不直观@丽卡:嗨。是的,一开始是这样的。您可能需要查看
repeated
字段的相关API,请参阅。方法
add_tupes()
将返回一个指向新添加元素的指针,因此它将是
record->set_key(“key”)
记录->设置张量(“张量”)。是的,我已经修复了,非常感谢您的慷慨帮助,非常感谢兄弟;)