मैं एक जोड़ो में फैशन में मेरी तंत्रिका नेटवर्क से भविष्यवाणी की मानों yp
तुलना करना चाहते हैं, और इसलिए मैं (वापस मेरे पुराने numpy कार्यान्वयन में) का उपयोग किया गया था:TensorFlow: numpy.repeat() विकल्प
idx = np.repeat(np.arange(len(yp)), len(yp))
jdx = np.tile(np.arange(len(yp)), len(yp))
s = yp[[idx]] - yp[[jdx]]
यह मूल रूप से एक इंडेक्सिंग जाल बनाते हैं जिसका मैं उपयोग करता हूं। idx=[0,0,0,1,1,1,...]
जबकि jdx=[0,1,2,0,1,2...]
। मुझे नहीं पता कि यह करने का एक आसान तरीका है ...
किसी भी तरह, टेंसरफ्लो में tf.tile()
है, लेकिन ऐसा लगता है कि tf.repeat()
की कमी है।
idx = np.repeat(np.arange(n), n)
v2 = v[idx]
और मैं त्रुटि मिलती है:
TypeError: Bad slice index [ 0 0 0 ..., 215 215 215] of type <type 'numpy.ndarray'>
यह भी अनुक्रमण के लिए एक TensorFlow निरंतर उपयोग करने के लिए काम नहीं करता:
idx = tf.constant(np.repeat(np.arange(n), n))
v2 = v[idx]
-
TypeError: Bad slice index Tensor("Const:0", shape=TensorShape([Dimension(46656)]), dtype=int64) of type <class 'tensorflow.python.framework.ops.Tensor'>
विचार मेरेको परिवर्तित करना है TensorFlow के लिएकार्यान्वयन।
ऐसा लगता है कि कोड में कोई गलती है? मैं 'लेन (वाईपी) == 4' के साथ भाग गया और' idx' का उत्पादन '0 0 2 2 0 1 2 3 0 1 2 3 0 1 2 3]' और नहीं '[0,0,0, 1,1,1, ...] '। – Clash
टाइलिंग के बाद 'tf.transpose' कॉल जोड़ना सही आउटपुट प्राप्त करता है' [0 0 0 1 1 1 1 2 2 2 2 3 3 3 3] '। सही रेखा 'idx = tf.transpose है (tf.tile (idx, [len (yp), 1]))'? – Clash
अच्छी पकड़ - जवाब वास्तव में 'jdx' की गणना करने के लिए एक अत्यधिक लंबी हवादार रास्ता दिया! मैंने इसे स्पष्ट करने के लिए अद्यतन किया कि कैसे किसी को 'idx' और' jdx' की गणना की जा सकती है। – mrry