Cannot convert a symbolic Tensor (StatefulPartitionedCall_1:0) to a numpy array

I am trying to get the AMD Radeon Pro 5700 XT GPU on my iMac 27" 2021 running Big Sur 11.4 to work with tensorflow-macos.

If I disable eager execution I get an exception, if I don't, tensorflow-macos choses the CPU and not the GPU.

Here's a simple example which shows the exception:

import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_text
import numpy as np
from sklearn.preprocessing import normalize

from tensorflow.python.framework.ops import disable_eager_execution
disable_eager_execution()

m4 = hub.load("/Users/davidlaxer/Downloads/universal-sentence-encoder_4")
english_sentences = ["dog", "Puppies are nice.", "I enjoy taking long walks along the beach with my dog."]
r4 = np.array(m4(english_sentences))
print(r4)
print(m4)
type(r4)
type(m4)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-4-8b0ba0e4c28c> in <module>
      1 m4 = hub.load("/Users/davidlaxer/Downloads/universal-sentence-encoder_4")
      2 english_sentences = ["dog", "Puppies are nice.", "I enjoy taking long walks along the beach with my dog."]
----> 3 r4 = np.array(m4(english_sentences))
      4 print(r4)
      5 print(m4)

~/anaconda3/envs/tensorflow_mac/lib/python3.8/site-packages/tensorflow/python/framework/ops.py in __array__(self)
    850 
    851   def __array__(self):
--> 852     raise NotImplementedError(
    853         "Cannot convert a symbolic Tensor ({}) to a numpy array."
    854         " This error may indicate that you're trying to pass a Tensor to"

NotImplementedError: Cannot convert a symbolic Tensor (StatefulPartitionedCall_1:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported

And commenting out disable_eager_execution():

from tensorflow.python.framework.ops import disable_eager_execution
#disable_eager_execution()


m4 = hub.load("/Users/davidlaxer/Downloads/universal-sentence-encoder_4")
english_sentences = ["dog", "Puppies are nice.", "I enjoy taking long walks along the beach with my dog."]
r4 = np.array(m4(english_sentences))
print(r4)
print(m4)
type(r4)
type(m4)

[-0.06334164 -0.01812314  0.03680531 ... -0.02809388  0.02786911
  -0.04715428]
 [ 0.01975714 -0.02284616  0.04316505 ... -0.01376714 -0.00614742
  -0.00124967]
 [-0.02169351 -0.003993    0.06716524 ...  0.05952153  0.02262796
   0.03501643]]
<tensorflow.python.saved_model.load.Loader._recreate_base_user_object.<locals>._UserObject object at 0x7fbb3892a9a0>
[5]:
tensorflow.python.saved_model.load.Loader._recreate_base_user_object.<locals>._UserObject

The tensorflow group does not support this GPU and the tensorflow-mac repository is now read-only.

https://github.com/tensorflow/tensorflow/issues/50353

https://github.com/apple/tensorflow_macos

Any ideas?

Hi dbl001!

You are using tensorflow-macos and not tensorfow-metal. You should use the latter one. Could you please refer to this page: https://developer.apple.com/metal/tensorflow-plugin/

Thanks and please let us know.

Hi @dbl001, Were you able to install tensorflow-metal and noticed the same issue. Please let us know if issue exists.

Cannot convert a symbolic Tensor (StatefulPartitionedCall_1:0) to a numpy array
 
 
Q