मेरे पास (num_features, num_examples) आकार के NumPy मैट्रिक्स के रूप में प्रतिनिधित्व किया गया डेटासेट है और मैं इसे TensorFlow प्रकार tf.Dataset में बदलना चाहता हूं।

मैं इन दो विधियों के बीच अंतर को समझने की कोशिश कर रहा हूं: Dataset.from_tensors और Dataset.from_tensor_slices। सही क्या है और क्यों?

TensorFlow प्रलेखन (link) कहता है कि दोनों विधि टेंसर की नेस्टेड संरचना को स्वीकार करती हैं हालांकि from_tensor_slices का उपयोग करते समय टेंसर का आकार 0-वें आयाम में समान होना चाहिए।

64
Llewlyn 30 मार्च 2018, 21:40

2 जवाब

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

from_tensors इनपुट को जोड़ती है और एक तत्व के साथ डेटासेट लौटाती है:

t = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensors(t)   # [[1, 2], [3, 4]]

from_tensor_slices इनपुट टेंसर की प्रत्येक पंक्ति के लिए एक अलग तत्व के साथ एक डेटासेट बनाता है:

t = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensor_slices(t)   # [1, 2], [3, 4]
75
MatthewScarpino 30 मार्च 2018, 19:05

मुझे लगता है कि @MatthewScarpino ने इन दो तरीकों के बीच अंतर को स्पष्ट रूप से समझाया।

यहाँ मैं इन दो विधियों के विशिष्ट उपयोग का वर्णन करने का प्रयास करता हूँ:

  • from_tensors का उपयोग कई छोटे डेटासेट से बड़ा डेटासेट बनाने के लिए किया जा सकता है, यानी डेटासेट का आकार (लंबाई) बड़ा हो जाता है;

  • जबकि from_tensor_slices का उपयोग विभिन्न तत्वों को एक डेटासेट में संयोजित करने के लिए किया जा सकता है, उदाहरण के लिए, सुविधाओं और लेबल को एक डेटासेट में संयोजित करना (यही कारण है कि टेंसर का पहला आयाम समान होना चाहिए)। यही है, डेटासेट "व्यापक" हो जाता है।

10
Jiren Jin 26 पद 2019, 08:02