【问题标题】:Tensorflow - Choose TFRecord Features at Graph Build TimTensorflow - 在 Graph Build Tim 中选择 TFRecord 功能
【发布时间】:2017-02-10 21:54:16
【问题描述】:

假设我有具有以下特征映射的 TFRecord 示例:

feature_mapping =  {
"sentence":tf.VarLenFeature(tf.string), 
'caps':tf.VarLenFeature(tf.string),
'tags':tf.VarLenFeature(tf.string),
'labels': tf.VarLenFeature(tf.string)
} 

我总是需要 sentencelabels,但有时我需要 0,1 或更多剩余功能。我知道在 Graph 构建时我想要什么功能。

如何在图形构建时选择多个功能?

比如句子和标签,没问题:

parsed = tf.parse_example(example, features=feature_mapping)
sentence = parsed['sentence']
labels = parsed['labels']

但是我可以提取多个功能吗?即:

FEATURE_NAMES = ['caps', 'tags']
parsed = tf.parse_example(example, features=feature_mapping)
features = tf.multiple_features(parsed, FEATURE_NAMES] # Does something like this exist?  

我也愿意更改我的 TFRecord 表示。任何帮助,将不胜感激。

谢谢!

【问题讨论】:

  • 这只是一个 Python 字典,对吧?因此,您可以执行[parsed[k] for k in FEATURE_NAMES] 之类的操作来获取列表。
  • 是的,但这适用于图形表示吗?我一直在 TF 中完全避免循环。
  • 除非你收集了数百个,否则我不会担心。如果有,您需要连接一些列,而不是更改它们在该字典中的查找方式以产生性能差异..
  • 谢谢@AllenLavoie,你是对的。我发布了正确的代码。我想图形表示有时仍然让我感到困惑:)

标签: tensorflow


【解决方案1】:

感谢@Allen Lavoie 指出这是一个简单的解决方案。我需要把它们放在一个列表中,然后根据这个帖子here,我只需要将 tf.pack 放入一个列表中。下面是解决方案。

# get features
FEATURES = ['labels', 'caps']
output_list = [] 
for f in range(len(FEATURES)):
    feats = parsed[FEATURES[f]]
    dense_feats = tf.sparse_tensor_to_dense(feats, default_value='<PAD>')
    output_list.append(dense_feats)

features = tf.pack(output_list)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多