मुझे tf.cond में उपयोग करने के लिए 1d टेंसर ऑफ़ शेप (1,) को स्केलर 1 या () में टेंसरफ़्लो में बदलने की आवश्यकता है।

लेकिन समस्या यह है कि tf.cond(number <T,treu_fn=..,false_fn=.. संख्या आकार (1,) की है और T () केवल एक अदिश राशि है।

नमूना कोड स्निपेट:

number = tf.gather_nd(number_buffer,indices)
number = tf.cast(number,dtype=tf.int32)  #T is const of type int32
result = tf.cond(number < T,lambda: tf.add(i,1),lambda: tf.add(P,0))
     
       
     

जब मैं सत्र चलाता हूं, तो मुझे नीचे त्रुटि मिल रही है।

ValueError: Shape must be rank 0 but is rank 1 for '{{node while/cond/Switch}} = Switch[T=DT_BOOL](while/Less_1, while/Less_1)' with input shapes: [1], [1].

मुझे कारण पता है, लेकिन मुझे नहीं पता कि इस त्रुटि को कैसे ठीक किया जाए।

कोई इसे टेंसर के रैंक को कम करने के रूप में भी मान सकता है।

क्या कोई इसमें मेरी मदद कर सकता है!

अग्रिम में धन्यवाद

1
mariya 7 फरवरी 2021, 11:33

1 उत्तर

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

यदि number टेंसर (1,) आकार का है, जिसे आप केवल squeeze या reshape इसे एक अदिश राशि बनाने के लिए:

number = tf.squeeze(number)

सुनिश्चित करें कि tf.gather_nd केवल एक तत्व लौटाता है, जिसका अर्थ है कि indices लंबाई की एक सरणी होनी चाहिए।

1
Ilango Rajagopal 7 फरवरी 2021, 12:23