TensorFlow源码分析(9):Proto Buffer生成的C++类

本文深入探讨了TensorFlow中Proto Buffer生成的C++类DeviceAttributes,详细介绍了其字段如name、device_type、physical_device_desc、memory_limit及locality的相关方法。重点讨论了Proto Buffer的内存管理策略,包括Arena的使用,以及如何处理自定义类型和repeated字段。
摘要由CSDN通过智能技术生成

文章(8)中提到,Proto Buffer提供了一个工具,可以为不同编程语言,自动生成支持Proto Buffer协议的数据类型。本文继续以DeviceAttributes类为例,介绍C++的Proto Buffer类。

默认情况下,Proto Buffer生成的C++类都定义在.pb.h文件中。TensorFlow也沿用了这一规则。DeviceAttributes类定义在core/framework/device_attributes.pb.h文件中。

class DeviceAttributes : public ::google::protobuf::Message

上面的代码告诉我们,任何Proto Buffer类必须继承自protobuf::Message类。

DeviceAttributes类定义的方法特别多。要了解这些方法的意义,首先需要回顾DeviceAttributes消息类型的定义。

message DeviceAttributes {
  string name = 1;
  string device_type = 2;
  int64 memory_limit = 4;
  DeviceLocality locality = 5;
  fixed64 incarnation = 6;
  string physical_device_desc = 7;
}

 

DeviceAttributes类的许多方法与消息类型的字段相关,例如,针对name字段,我们有如下方法。

void clear_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值