यह वह कोड है जिसका उपयोग डेटा को TFRecord में बदलने के लिए किया जाता है

def _int64_feature(value):
    return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

 def _bytes_feature(value):
   return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

def _floats_feature(value):
   return tf.train.Feature(float_list=tf.train.FloatList(value=value))

with tf.python_io.TFRecordWriter("train.tfrecords") as writer:
    for row in train_data:
        prices, label, pip = row[0],row[1],row[2]
        prices = np.asarray(prices).astype(np.float32)
        example = tf.train.Example(features=tf.train.Features(feature={
                                           'prices': _floats_feature(prices),
                                           'label': _int64_feature(label[0]),
                                           'pip': _floats_feature(pip)
    }))
        writer.write(example.SerializeToString())

फ़ीचर कीमतें आकार की एक सरणी है(1,288)। यह सफलतापूर्वक परिवर्तित हो गया! लेकिन जब एक पार्स फ़ंक्शन और डेटासेट एपीआई का उपयोग करके डेटा को डीकोड किया जाता है।

def parse_func(serialized_data):
    keys_to_features = {'prices': tf.FixedLenFeature([], tf.float32),
                    'label': tf.FixedLenFeature([], tf.int64)}

    parsed_features = tf.parse_single_example(serialized_data, keys_to_features)
    return parsed_features['prices'],tf.one_hot(parsed_features['label'],2)

इसने मुझे त्रुटि दी

C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\framework\op_kernel.cc:1202] OP_REQUIRES example_parsing_ops.cc:240 पर विफल: अमान्य तर्क: कुंजी: कीमतें। क्रमबद्ध उदाहरण का विश्लेषण नहीं कर सकता। 2018-03-31 15:37:11.443073: WC:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\framework\op_kernel.cc:1202] OP_REQUIRES example_parsing_ops.cc पर विफल रहा :240 : अमान्य तर्क: कुंजी: कीमतें। क्रमबद्ध उदाहरण का विश्लेषण नहीं कर सकता। 2018-03-31 15:37:11.443313: WC:\tf_jenkins\workspace\rel-win\M\windows-gpu\ प्रकार (e)(node_def, op, message) PY\36\tensortensorflow.python.framework बढ़ाएँ। error_impl.InvalidArgumentError: कुंजी: मूल्य। क्रमबद्ध उदाहरण का विश्लेषण नहीं कर सकता। [[नोड: ParseSingleExample/ParseSingleExample = ParseSingleExample[Tdense=[DT_INT64, DT_FLOAT], सघन_की = ["लेबल", "कीमतें"], सघनता = [[], []], num_sparse = 0, sparse_parse_ [] प्रकार, s =[]](arg0, ParseSingleExample/Const, ParseSingleExample/Const_1)]] [[नोड: IteratorGetNext_1 = IteratorGetNextoutput_shapes=[[?], [?,2]], output_types=[DT_FLOAT, DT_FLOAT], _device="/job :लोकलहोस्ट/प्रतिकृति:0/कार्य:0/डिवाइस:सीपीयू:0"]]फ्लो ओउ\कोर\फ्रेमवर्क\op_kernel.cc:1202] OP_REQUIRES example_parsing_ops.cc:240 पर विफल: अमान्य तर्क: कुंजी: कीमतें। क्रमबद्ध उदाहरण का विश्लेषण नहीं कर सकता।

3
Thien 31 मार्च 2018, 16:39

4 जवाब

सबसे बढ़िया उत्तर

मुझे समस्या मिली। किसी सरणी को पार्स करने के लिए tf.io.FixedLenFeature का उपयोग करने के बजाय, tf.io.FixedLenSequenceFeature का उपयोग करें
(TensorFlow 1 के लिए tf.io. के बजाय tf. का उपयोग करें)

10
Itamar Mushkin 18 मार्च 2020, 09:03

आप फ्लोट फीचर के रूप में एन-डायमेंशनल ऐरे को स्टोर नहीं कर सकते क्योंकि फ्लोट फीचर सरल सूचियां हैं। आपको prices को prices.tolist() करके एक सूची में समतल करना होगा। यदि आपको फ़्लैटेड फ्लोट सुविधा से n-आयामी सरणी को पुनर्प्राप्त करने की आवश्यकता है, तो आप prices = np.reshape(float_feature, original_shape) कर सकते हैं।

1
bantmen 31 मार्च 2018, 15:48

कुछ लिपियों को लापरवाही से संशोधित करते समय मेरे पास एक ही समस्या थी, यह थोड़ा अलग डेटा आकार के कारण था। मुझे अपेक्षित आकार से मेल खाने के लिए आकार बदलना पड़ा, उदाहरण के लिए (A, B) से (1, A, B)। मैंने चपटा करने के लिए np.ravel() का इस्तेमाल किया।

0
drali 30 अप्रैल 2018, 15:22

यदि आपकी सुविधा एक निश्चित 1-डी सरणी है तो tf.FixedLenSequenceFeature का उपयोग करना बिल्कुल भी सही नहीं है। जैसा कि प्रलेखन में उल्लेख किया गया है, tf.FixedLenSequenceFeature आयाम 2 और उच्चतर वाले इनपुट डेटा के लिए है। इस उदाहरण में आपको अपने मूल्य सरणी को (288,) बनने के लिए समतल करना होगा और फिर डिकोडिंग भाग के लिए आपको सरणी आयाम का उल्लेख करना होगा।

सांकेतिक शब्दों में बदलना:

example = tf.train.Example(features=tf.train.Features(feature={
                                       'prices': _floats_feature(prices.tolist()),
                                       'label': _int64_feature(label[0]),
                                       'pip': _floats_feature(pip)

व्याख्या करना:

keys_to_features = {'prices': tf.FixedLenFeature([288], tf.float32),
                'label': tf.FixedLenFeature([], tf.int64)}
4
Sajad Norouzi 6 नवम्बर 2018, 02:55