जवाबों:
किसी भी टेनर द्वारा लौटाया गया Session.run
या eval
एक न्यूपी सरणी है।
>>> print(type(tf.Session().run(tf.constant([1,2,3]))))
<class 'numpy.ndarray'>
या:
>>> sess = tf.InteractiveSession()
>>> print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>
या, समकक्ष:
>>> sess = tf.Session()
>>> with sess.as_default():
>>> print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>
संपादित करें: किसी भी टेंसर द्वारा नहीं लौटाया गया है Session.run
या eval()
एक NumPy सरणी है। उदाहरण के लिए स्पार्स सेंसर SparseTensorValue के रूप में लौटाए जाते हैं:
>>> print(type(tf.Session().run(tf.SparseTensor([[0, 0]],[1],[1,2]))))
<class 'tensorflow.python.framework.sparse_tensor.SparseTensorValue'>
टेंसर से वापस सुन्न सरणी में परिवर्तित करने के लिए आप बस .eval()
ट्रांसफॉर्म किए गए टेंसर पर चल सकते हैं ।
ValueError: Cannot evaluate tensor using 'eval()': No default session is registered. Use 'with sess.as_default()' or pass an explicit session to 'eval(session=sess)'
यह केवल एक टेंसोफ्लो सत्र के दौरान उपयोग करने योग्य है?
.eval()
सत्र के अंदर से मेथड कॉल चलाने की आवश्यकता है : sess = tf.Session(); with sess.as_default(): print(my_tensor.eval())
उत्सुक निष्पादन डिफ़ॉल्ट रूप से सक्षम है, इसलिए केवल .numpy()
Tensor ऑब्जेक्ट पर कॉल करें ।
import tensorflow as tf
a = tf.constant([[1, 2], [3, 4]])
b = tf.add(a, 1)
a.numpy()
# array([[1, 2],
# [3, 4]], dtype=int32)
b.numpy()
# array([[2, 3],
# [4, 5]], dtype=int32)
tf.multiply(a, b).numpy()
# array([[ 2, 6],
# [12, 20]], dtype=int32)
यह ध्यान देने योग्य है (डॉक्स से),
Numpy array Tensor ऑब्जेक्ट के साथ मेमोरी साझा कर सकती है। एक में कोई भी परिवर्तन दूसरे में परिलक्षित हो सकता है।
बोल्ड जोर मेरा। एक प्रति वापस हो सकती है या नहीं, और यह एक कार्यान्वयन विवरण है।
यदि ईगर निष्पादन अक्षम किया गया है, तो आप एक ग्राफ बना सकते हैं और फिर इसके माध्यम से चला सकते हैं tf.compat.v1.Session
:
a = tf.constant([[1, 2], [3, 4]])
b = tf.add(a, 1)
out = tf.multiply(a, b)
out.eval(session=tf.compat.v1.Session())
# array([[ 2, 6],
# [12, 20]], dtype=int32)
पुराने API की मैपिंग के लिए नए के लिए TF 2.0 सिंबल मैप भी देखें ।
eval()
।
आपको:
कोड:
import tensorflow as tf
import matplotlib.pyplot as plt
import PIL
...
image_tensor = <your decoded image tensor>
jpeg_bin_tensor = tf.image.encode_jpeg(image_tensor)
with tf.Session() as sess:
# display encoded back to image data
jpeg_bin = sess.run(jpeg_bin_tensor)
jpeg_str = StringIO.StringIO(jpeg_bin)
jpeg_image = PIL.Image.open(jpeg_str)
plt.imshow(jpeg_image)
इसने मेरे लिए काम किया। आप इसे ipython नोटबुक में आज़मा सकते हैं। बस निम्नलिखित पंक्ति जोड़ना न भूलें:
%matplotlib inline
मैंने होशियार पुस्तकालय / ट्यूटोरियल के साथ प्राप्त टेंसरों का प्रतिनिधित्व (प्रतिकूल) छवियों के विशिष्ट मामले में टेंसर-> ndarray रूपांतरण का सामना किया और हल किया है ।
मुझे लगता है कि मेरा प्रश्न / उत्तर ( यहां ) अन्य मामलों के लिए भी एक सहायक उदाहरण हो सकता है।
मैं TensorFlow के साथ नया हूँ, मेरा एक अनुभवजन्य निष्कर्ष है:
ऐसा लगता है कि इनपुट प्लेसहोल्डर्स के सफल होने के लिए टेंसर.वैल () विधि की आवश्यकता हो सकती है । Tensor एक फंक्शन की तरह काम कर सकता है feed_dict
, जिसके आउटपुट वैल्यू को वापस करने के लिए इसके इनपुट वैल्यूज़ (इसमें दिए गए ) की ज़रूरत होती है
array_out = tensor.eval(session=sess, feed_dict={x: x_input})
कृपया ध्यान दें कि मेरे मामले में प्लेसहोल्डर का नाम x है, लेकिन मुझे लगता है कि आपको इनपुट प्लेसहोल्डर का सही नाम पता लगाना चाहिए ।
x_input
एक अदिश मान या सरणी है जिसमें इनपुट डेटा है।
मेरे मामले में भी प्रदान sess
करना अनिवार्य था।
मेरा उदाहरण भी matplotlib छवि विज़ुअलाइज़ेशन भाग को कवर करता है , लेकिन यह OT है।
एक सरल उदाहरण हो सकता है,
import tensorflow as tf
import numpy as np
a=tf.random_normal([2,3],0.0,1.0,dtype=tf.float32) #sampling from a std normal
print(type(a))
#<class 'tensorflow.python.framework.ops.Tensor'>
tf.InteractiveSession() # run an interactive session in Tf.
n अब अगर हम चाहते हैं कि यह टेंसर ए को एक सुपीरियर एरे में बदला जाए
a_np=a.eval()
print(type(a_np))
#<class 'numpy.ndarray'>
इतना सरल है!
//
अजगर में टिप्पणी करने के लिए नहीं है। कृपया अपना उत्तर संपादित करें।
मैं इस कमांड के लिए दिन खोज रहा था।
यह मेरे लिए किसी भी सत्र के बाहर या इस तरह से काम करता है।
# you get an array = your tensor.eval(session=tf.compat.v1.Session())
an_array = a_tensor.eval(session=tf.compat.v1.Session())
https://kite.com/python/answers/how-to-convert-a-tensorflow-tensor-to-a-numpy-array-in-python
आप केरस बैकेंड फ़ंक्शन का उपयोग कर सकते हैं।
import tensorflow as tf
from tensorflow.python.keras import backend
sess = backend.get_session()
array = sess.run(< Tensor >)
print(type(array))
<class 'numpy.ndarray'>
मुझे उम्मीद है यह मदद करेगा!