2015-11-14 34 views
7

की टेन्सर आरंभ तो मैं एक टेन्सरTensorFlow लोगों

X = tf.placeholder("float", [None, 5]) 

तो मैं स्तंभों की संख्या लेकिन पंक्तियों की संख्या नहीं पता है कि मान लीजिए। मैं, आयाम के लोगों nrows x 1

अब कोड का यह ब्लॉक काम नहीं करता है का एक वेक्टर प्रारंभ करने में

o = tf.ones(shape=(tf.shape(X)[0], 1)) 
==> TypeError: List of Tensors when single Tensor expected 

ना ही,

o = tf.ones(shape=(X.get_shape()[0].value, 1)) 
==> TypeError: Input 'dims' of 'Fill' Op has type 
    string that does not match expected type of int32. 

अब जरूरत है, मैं ने पाया है एक ही रास्ता है कि इसके आसपास पाने के लिए वास्तव में मेरे वेक्टर को प्लेसहोल्डर बनाना है,

o = tf.placeholder(dtype=tf.float32, shape=[None, 1]) 

और मेरे feed_dict में उचित आकार वाले लोगों की एक संख्यात्मक सरणी में गुजरने के लिए। लेकिन यह समाधान मुझे सुरुचिपूर्ण और प्लेसहोल्डर के इच्छित उपयोग के रूप में नहीं मारता है। मैं यहां गलत हो सकता हूं, लेकिन निश्चित रूप से एक बेहतर तरीका है।

o = tf.ones(shape=tf.pack([tf.shape(X)[0], 1]))

कारण आप में त्रुटियां थीं कि TensorFlow आकार पूर्णांक या एक टेन्सर link की एक सूची होने की उम्मीद है है:

उत्तर

6

अपनी समस्या को हल करने के लिए जिस तरह से tf.pack आपरेशन उपयोग करने के लिए है। tf.pack पूर्णांक और/या टेंसरफ्लो स्केलर की सूची को टेंसर ऑब्जेक्ट में कनवर्ट करना आसान बनाता है।

+0

ग्रेट धन्यवाद! आपके समाधान ने – user1936768

+0

काम किया है tf.pack अब 'tensorflow> = 1.00' –

+0

द्वारा समर्थित नहीं है, हालांकि मुझे लगता है कि आप 'स्टैक' का उपयोग कर सकते हैं? –