Created by: reyoung
添加protobuf Attribute。
基本用法
简化Protobuf
我们之后写的Layer和DataProvider的参数,都可以用这个Attribute来统一。这样,我们新写Layer就不用改Protobuf了。
Protobuf3兼容性
如果我们所有的Attribute都是用这种机制写的,那么(未来)升级Protobuf3的时候,就会非常简单。只需要写一个新的AttributeWriter和AttributeReader就好了。
进阶用法
我们可以在每个Layer的cpp里面,定义一些Attribute,比如这个Layer输入的类型是什么,支持的参数类型有什么。然后序列化到protobuf中。
config_parser部分的python文件,直接读取这个序列化的proto,动态(运行时)生成layer function。这样我们添加新Layer,就只需要改Cpp了。
这个patch
做了什么
这个Patch只添加了Attribute这个类,并且用PyDataProvider2做了实验,证明这个机制可以跑通。
可能有的问题
- 这样的Attribute不支持Default Value。不过protobuf3里面也不支持default value。
- 这样读取Attribute的时候,会有一次O(n)的线性查找
- 升级到protobuf3,可以改成map
- 即使在protobuf2,这种attribute的读取工作并不常见,应该不会是性能瓶颈。