0

I have a Tensor which I'm trying to save as a TensorProto as shown here

print(type(x))
print('TensorProto:\n{}'.format(x))
# Save the TensorProto
with open('tensor.pb', 'wb+') as f:
    f.write(x.SerializeToString())

Error:

    <class 'tensorflow.python.framework.ops.Tensor'>
    (1, 118, 120, 80, 3)
    TensorProto:
    Tensor("images:0", shape=(?, ?, 120, 80, 3), dtype=float32)
    Traceback (most recent call last):
      File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "/home/harry/mm/Bosch_DL_HW_Benchmark/03_benchmark/03_code/evaluation/evaluate_network_actrec.py", line 218, in <module>
        f.write(x.SerializeToString())
      File "/home/harry/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py", line 401, in __getattr__
        self.__getattribute__(name)
    AttributeError: 'Tensor' object has no attribute 'SerializeToString'

What am I doing wrong here?

1 Answer 1

1

The type of x is tensor, not tensorProto. Just convert tensor to tensorProto before serializing. Follow this link

x = tf.make_tensor_proto(x)

Update

Your tensorflow is running in non eager mode. Therefore, the type of tensor is tensorflow.python.framework.ops.tensor. Under this circumstances,Tensorflow only defines the calculation method(aka graph) such as the combination of some operations like addition, subtraction, multiplication and division. It won't do any calculations because there is no data flow in the graph. So you need to run in eager mode and get eager tensor. An example may help you below.

non eager mode

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

x = tf.constant(1)
print(type(x))
x = tf.make_tensor_proto(x)  # TypeError: Expected any non-tensor type, got a tensor instead.

eager mode

import tensorflow as tf

tf.compat.v1.enable_eager_execution()

x = tf.constant(1)
print(type(x))
x = tf.make_tensor_proto(x)
print(type(x))
Sign up to request clarification or add additional context in comments.

1 Comment

I'm getting TypeError: Expected any non-tensor type, got a tensor instead.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.