gpt4 book ai didi

tensorflow - 对于可变长度特征,使用 tf.train.SequenceExample 相对于 tf.train.Example 有何优点?

转载 作者:行者123 更新时间:2023-12-03 00:36:54 26 4
gpt4 key购买 nike

最近我读了this TensorFlow 中未记录特征的指南,因为我需要传递可变长度序列作为输入。但是,我发现 tf.train.SequenceExample 的协议(protocol)相对困惑(特别是由于缺乏文档),并设法使用 tf.train.Example 构建输入管道相反就好了。

使用tf.train.SequenceExample有什么优势吗?当有专门用于可变长度序列的协议(protocol)时,使用标准示例协议(protocol)似乎是一种作弊,但它会产生任何后果吗?

最佳答案

以下是 ExampleSequenceExample Protocol Buffer 的定义,以及它们可能包含的所有原型(prototype):

message BytesList { repeated bytes value = 1; }
message FloatList { repeated float value = 1 [packed = true]; }
message Int64List { repeated int64 value = 1 [packed = true]; }
message Feature {
oneof kind {
BytesList bytes_list = 1;
FloatList float_list = 2;
Int64List int64_list = 3;
}
};
message Features { map<string, Feature> feature = 1; };
message Example { Features features = 1; };

message FeatureList { repeated Feature feature = 1; };
message FeatureLists { map<string, FeatureList> feature_list = 1; };
message SequenceExample {
Features context = 1;
FeatureLists feature_lists = 2;
};

Example 包含一个 Features,其中包含从功能名称到 Feature 的映射,其中包含 bytes code> 列表、float 列表或 int64 列表。

SequenceExample 还包含一个 Features,但它还包含一个 FeatureLists,其中包含从列表名称到 FeatureList 的映射,其中包含功能列表。因此它可以完成 Example 可以做的所有事情,甚至更多。但您真的需要额外的功能吗?它有什么作用?

由于每个 Feature 都包含一个值列表,因此 FeatureList 是一个列表列表。这就是关键:如果您需要值列表的列表,那么您需要 SequenceExample

例如,如果您处理文本,则可以将其表示为一个大字符串:

from tensorflow.train import BytesList

BytesList(value=[b"This is the first sentence. And here's another."])

或者您可以将其表示为单词和标记的列表:

BytesList(value=[b"This", b"is", b"the", b"first", b"sentence", b".", b"And", b"here",
b"'s", b"another", b"."])

或者你可以单独表示每个句子。这就是您需要列表列表的地方:

from tensorflow.train import BytesList, Feature, FeatureList

s1 = BytesList(value=[b"This", b"is", b"the", b"first", b"sentence", b"."])
s2 = BytesList(value=[b"And", b"here", b"'s", b"another", b"."])
fl = FeatureList(feature=[Feature(bytes_list=s1), Feature(bytes_list=s2)])

然后创建SequenceExample:

from tensorflow.train import SequenceExample, FeatureLists

seq = SequenceExample(feature_lists=FeatureLists(feature_list={
"sentences": fl
}))

您可以将其序列化,或许还可以将其保存到 TFRecord 文件中。

data = seq.SerializeToString()

稍后,当您读取数据时,可以使用 tf.io.parse_single_sequence_example() 来解析它。

关于tensorflow - 对于可变长度特征,使用 tf.train.SequenceExample 相对于 tf.train.Example 有何优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45634450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com