2017-02-10 1 views
1

を構築グラフで特長:Tensorflow - TFRecordを選択するのは、私は次の機能のマッピングとの例を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をしたい、またはそれ以上残りの機能グラフの作成時にどのような機能が必要なのか分かります。

グラフの作成時に複数の機能を選択するにはどうすればよいですか?

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表現も変更したいと思います。どんな助けもありがとう。

ありがとうございます!

+1

これはちょうどPython辞書ですよね?だからあなたは '[FEATURE_NAMESのkのための[parseed [k]]'のようなことをしてリストを得ることができます。 –

+0

はい、それはグラフ表現のために機能しますか?私はTFで完全にループを避けてきました。 – Neal

+1

収集しているものが何百何もない限り、私はそれについて心配しません。もし存在すれば、パフォーマンスの差を作るためにその辞書で検索する方法を変更するのではなく、いくつかの列を連結する必要があります。 –

答えて

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) 
関連する問題