2016-10-27 14 views
5

पिछले कुछ दिनों से मुझे tfrecord प्रारूप में डेटा को क्रमबद्ध करने के साथ कोई समस्या हो रही है और उसके बाद parse_single_sequence उदाहरण का उपयोग करके इसे deserializing। मैं काफी मानक आरएनएन मॉडल के साथ उपयोग के लिए डेटा पुनर्प्राप्त करने का प्रयास कर रहा हूं, हालांकि यह टीएफआरकॉर्ड प्रारूप और संबंधित पाइपलाइन का उपयोग करने का मेरा पहला प्रयास है।आकार रैंक 0 होना चाहिए, लेकिन रैंक 1 है, parse_single_sequence_example

import tensorflow as tf 
import tempfile 
from IPython import embed 

sequences = [[1, 2, 3], [4, 5, 1], [1, 2]] 
label_sequences = [[0, 1, 0], [1, 0, 0], [1, 1]] 

def make_example(sequence, labels): 

    ex = tf.train.SequenceExample() 

    sequence_length = len(sequence) 
    ex.context.feature["length"].int64_list.value.append(sequence_length) 

    fl_tokens = ex.feature_lists.feature_list["tokens"] 
    fl_labels = ex.feature_lists.feature_list["labels"] 
    for token, label in zip(sequence, labels): 
     fl_tokens.feature.add().int64_list.value.append(token) 
     fl_labels.feature.add().int64_list.value.append(label) 
    return ex 


writer = tf.python_io.TFRecordWriter('./test.tfrecords') 
for sequence, label_sequence in zip(sequences, label_sequences): 
    ex = make_example(sequence, label_sequence) 
    writer.write(ex.SerializeToString()) 
writer.close() 

tf.reset_default_graph() 

file_name_queue = tf.train.string_input_producer(['./test.tfrecords'], num_epochs=None) 

reader = tf.TFRecordReader() 



context_features = { 
    "length": tf.FixedLenFeature([], dtype=tf.int64) 
} 
sequence_features = { 
    "tokens": tf.FixedLenSequenceFeature([], dtype=tf.int64), 
    "labels": tf.FixedLenSequenceFeature([], dtype=tf.int64) 
} 

ex = reader.read(file_name_queue) 

# Parse the example (returns a dictionary of tensors) 
context_parsed, sequence_parsed = tf.parse_single_sequence_example(
    serialized=ex, 
    context_features=context_features, 
    sequence_features=sequence_features 
) 


context = tf.contrib.learn.run_n(context_parsed, n=1, feed_dict=None) 
print(context[0]) 
sequence = tf.contrib.learn.run_n(sequence_parsed, n=1, feed_dict=None) 
print(sequence[0]) 

जुड़े स्टैक ट्रेस है:

Traceback (most recent call last): 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/common_shapes.py", line 594, in call_cpp_shape_fn 
status) 
File "/usr/lib/python3.5/contextlib.py", line 66, in exit 
next(self.gen) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors.py", line 463, in raise_exception_on_not_ok_status 
pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors.InvalidArgumentError: Shape must be rank 0 but is rank 1 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "my_test.py", line 51, in 
sequence_features=sequence_features 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/parsing_ops.py", line 640, in parse_single_sequence_example 
feature_list_dense_defaults, example_name, name) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/parsing_ops.py", line 837, in _parse_single_sequence_example_raw 
name=name) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_parsing_ops.py", line 285, in _parse_single_sequence_example 
name=name) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 749, in apply_op 
op_def=op_def) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2382, in create_op 
set_shapes_for_outputs(ret) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1783, in set_shapes_for_outputs 
shapes = shape_func(op) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/common_shapes.py", line 596, in call_cpp_shape_fn 
raise ValueError(err.message) 
ValueError: Shape must be rank 0 but is rank 1 

मैं GitHub पर पर एक संभावित मुद्दे के रूप में इस पोस्ट हालांकि ऐसा लगता

यहाँ समस्या को ठीक करने मैं कर रहा हूँ एक खिलौना उदाहरण है मैं बस इसे गलत तरीके से उपयोग कर रहा हूं: Tensorflow Github Issue तो पृष्ठभूमि की जानकारी के साथ, मैं बस सोच रहा हूं कि क्या मैं वास्तव में यहां कोई त्रुटि कर रहा हूं? सही दिशा में किसी भी मदद की सराहना की जाएगी, यह कुछ दिनों से रहा है और मेरे चारों ओर पोकिंग नहीं किया गया है। सबको शुक्रीया!

उत्तर

0

समझ गया और यह मेरे हिस्से पर एक बुरा धारणा थी। tf.TFRecordReader.read(queue, name=None) एक टुपल देता है जब मुझे लगता है कि यह केवल (key, value) मान नहीं लौटा होगा जो मैं सीधे उदाहरण पार्सर में गुजर रहा था।

संबंधित मुद्दे