DataFeedDesc

    描述训练数据的格式。输入是一个文件路径名,其内容是protobuf message。

    可以参考 paddle/fluid/framework/data_feed.proto 查看我们如何定义message

    一段典型的message可能是这样的:

    用户需要了解DataFeedDesc中每个字段的含义,以便自定义字段的值。例如:

    1. import paddle.fluid as fluid
    2. data_feed = fluid.DataFeedDesc('data.proto')
    3. data_feed.set_batch_size(128)
    4. data_feed.set_dense_slots('words') # 名为'words'的slot将被设置为密集的
    5. data_feed.set_use_slots('words') # 名为'words'的slot将被用于训练
    6. # 最后,可以打印变量详细信息便于排查错误
    7. print(data_feed.desc())

    参数:

    • proto_file (string) : 包含数据描述的protobuf message的磁盘文件

    set_batch_size ( batch_size )

    该接口用于设置DataFeedDesc中的 batch_size 。可以在训练期间调用修改 batch_size

    代码示例

    • batch_size (int) - 新的批尺寸。

    返回:无

    set_dense_slots ( dense_slots_name )

    dense_slots_name 指定的slots设置为密集的slot。注意:默认情况下,所有slots都是稀疏的。

    密集slot的特征将被输入一个Tensor,而稀疏slot的特征将被输入一个LoDTensor。

    代码示例

    1. import paddle.fluid as fluid
    2. f = open("data.proto", "w")
    3. print >> f, 'name: "MultiSlotDataFeed"'
    4. print >> f, 'batch_size: 2'
    5. print >> f, ' slots {'
    6. print >> f, ' name: "words"'
    7. print >> f, ' is_dense: false'
    8. print >> f, ' is_used: true'
    9. print >> f, ' }'
    10. print >> f, ' slots {'
    11. print >> f, ' name: "label"'
    12. print >> f, ' type: "uint64"'
    13. print >> f, ' is_dense: false'
    14. print >> f, ' is_used: true'
    15. print >> f, ' }'
    16. print >> f, '}'
    17. f.close()
    18. data_feed = fluid.DataFeedDesc('data.proto')
    19. data_feed.set_dense_slots(['words'])

    参数:

    • dense_slots_name (list(str)) - slot名称的列表,这些slot将被设置为密集的。

    返回:无

    set_use_slots ( use_slots_name )

    参数:

    • use_slots_name (list) : 将在训练中使用的slot名列表,类型为list,其中每个元素为一个字符串

    代码示例:

    注解

    默认值是不使用所有slot

    desc ( )

    返回此DataFeedDesc的protobuf message

    返回:一个protobuf message字符串

    代码示例:

    1. f = open("data.proto", "w")
    2. print >> f, 'batch_size: 2'
    3. print >> f, 'multi_slot_desc {'
    4. print >> f, ' slots {'
    5. print >> f, ' name: "words"'
    6. print >> f, ' type: "uint64"'
    7. print >> f, ' is_dense: false'
    8. print >> f, ' is_used: true'
    9. print >> f, ' }'
    10. print >> f, ' slots {'
    11. print >> f, ' name: "label"'
    12. print >> f, ' type: "uint64"'
    13. print >> f, ' is_dense: false'
    14. print >> f, ' is_used: true'
    15. print >> f, ' }'
    16. print >> f, '}'
    17. f.close()