मैं एक यादृच्छिक चर उत्पन्न करने और इसे दो बार उपयोग करने की कोशिश कर रहा हूं। हालांकि, जब मैं इसे दूसरी बार उपयोग करता हूं, जनरेटर एक दूसरा यादृच्छिक चर बनाता है जो पहले के समान नहीं होता है। यहाँ कोड प्रदर्शित करने के लिए है:मैं टेंसरफ्लो में एक यादृच्छिक वेक्टर कैसे उत्पन्न करूं और इसे आगे के उपयोग के लिए बनाए रखूं?
import numpy as np
import tensorflow as tf
# A random variable
rand_var_1 = tf.random_uniform([5],0,10, dtype = tf.int32, seed = 0)
rand_var_2 = tf.random_uniform([5],0,10, dtype = tf.int32, seed = 0)
#Op1
z1 = tf.add(rand_var_1,rand_var_2)
#Op2
z2 = tf.add(rand_var_1,rand_var_2)
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
z1_op = sess.run(z1)
z2_op = sess.run(z2)
print(z1_op,z2_op)
मैं z1_op
और z2_op
चाहते बराबर हो। मुझे लगता है कि ऐसा इसलिए है क्योंकि random_uniform
सेशन को दो बार बुलाया जाता है। यह प्राप्त करने के लिए TensorFlow (NumPy का उपयोग किए बिना) का उपयोग करने का कोई तरीका है?
(मेरे उपयोग के मामले अधिक जटिल है, लेकिन यह आसुत सवाल है।)
अगर मेरे पास 'sess.run' का नियंत्रण नहीं है तो यह कैसे काम करेगा? मैं इसे एक अनुमानक में उपयोग कर रहा हूं, इसलिए सभी सत्र प्रबंधन छिपा हुआ है। मेरे फ़ंक्शन 'g() को' f (t) 'दो बार कॉल करने की आवश्यकता है, उसी' t' के साथ। हालांकि, 'g()' के लिए प्रत्येक कॉल पर, मुझे एक अलग 'टी' चाहिए। असल में, मैं अपने कार्य की पूरी अवधि 'g()' के लिए 'tf.random_uniform()' के परिणाम को कैश करना चाहता हूं। –