2016-03-07 25 views
6

के साथ लगातार मैं एक चर बैच का आकार है, इसलिए मेरी आदानों की सभी चर बैच आकार को स्वीकार करने के रूपtensorflow चर आकार

tf.placeholder(tf.float32, shape=(None, ...) 

के हैं। हालांकि, आप परिवर्तनीय बैच आकार के साथ निरंतर मूल्य कैसे बना सकते हैं? इस मुद्दे को इस लाइन के साथ है:

log_probs = tf.constant(0.0, dtype=tf.float32, shape=[None, 1]) 

यह मुझे एक त्रुटि दे रहा है:

TypeError: unsupported operand type(s) for *: 'NoneType' and 'int' 

मैं इसे चर बैच आकार के साथ एक निरंतर टेन्सर प्रारंभ करने के लिए संभव है यकीन है, मैं इतना कैसे कर सकता है ?

tf.constant(0.0, dtype=tf.float32, shape=[-1, 1]) 

मैं इस त्रुटि मिलती है:

ValueError: Too many elements provided. Needed at most -1, but received 1 
+1

आप नहीं कर सकते - "tf.constant" सरणी को स्पष्ट रूप से बनाता है ताकि इसे आयामों को जानना आवश्यक हो। हालांकि, कई tensorflow समर्थन प्रसारण का समर्थन करता है, तो शायद आप इसके बजाय इसका उपयोग कर सकते हैं? http://docs.scipy.org/doc/numpy-1.10.1/user/basics.broadcasting.html –

उत्तर

13

एक tf.constant() ग्राफ निर्माण समय में आकार और मूल्य तय किया है, तो यह शायद नहीं है

मैं भी निम्नलिखित की कोशिश की है अपने आवेदन के लिए दायां सेशन।

आप एक गतिशील आकार और प्रत्येक तत्व के लिए एक ही (स्थिर) मूल्य के साथ एक टेन्सर बनाने का प्रयास कर रहे हैं, तो आप tf.fill() और tf.shape() का उपयोग एक उचित रूप से के आकार का टेन्सर बनाने के लिए कर सकते हैं।

input = tf.placeholder(tf.float32, shape=(None, ...)) 

# `tf.shape(input)` takes the dynamic shape of `input`. 
t = tf.fill(tf.shape(input), 0.5) 

Yaroslav mentions in his comment रूप में, आप भी (NumPy-style) broadcasting उपयोग करने के लिए गतिशील आकार के साथ एक टेन्सर materializing से बचने के लिए सक्षम हो सकता है: उदाहरण के लिए, एक टेन्सर tinput रूप में एक ही आकार और हर जगह मूल्य 0.5 है कि बनाने के लिए। उदाहरण के लिए, यदि input आकार (None, 32) और t आकार (1, 32) है तो कंप्यूटिंग tf.mul(input, t)input के आकार से मेल खाने के लिए पहले आयाम पर t प्रसारित करेगा।

+0

क्या होगा यदि मैं आकार बैच आकार पर निर्भर होना चाहता हूं? मान लें कि मेरे पास आकार का इनपुट टेंसर है (बैच_साइज, ऊंचाई, चौड़ाई, num_channels) 'जहां बैच_साइज कोई नहीं है। मैं मूल्य 'ऊंचाई' से भरा आकार '(बैच_साइज)' का एक टेंसर बनाना चाहता हूं। –

+0

आप एक ही विधि का उपयोग कर सकते हैं: 'height_vector = tf.fill (tf.shape (input_tensor) [0: 1], tf.shape (input_tensor) [1])'। – mrry