Stewart_R
Stewart_R

Reputation: 14515

Tensorflow - How to Convert int32 to string (using Python API for Tensorflow)

Simple question really but cannot seem to find a function in the TensorFlow docs or by googling.

How can I convert a tensor of type tf.int32 to one of type tf.string?

I tried simply casting it with something like this:

x = tf.constant([1,2,3], dtype=tf.int32)
x_as_string = tf.cast(x, dtype=tf.string) # hoping for this output: [ '1', '2', '3' ]

with tf.Session() as sess:
  res = sess.run(x_as_string)

but hit the error message:

Cast int32 to string is not supported

Is there a simple function somewhere in the documentation that I am missing?


UPDATE:

To clarify: I realise I could 'work around' this issue using a python function with tf.py_func but asking if there is a solution in TensorFlow itself

Upvotes: 4

Views: 4934

Answers (2)

javidcf
javidcf

Reputation: 59731

You can do that with the newly added (v1.12.0) tf.strings.format:

import tensorflow as tf

x = tf.constant([1, 2, 3], dtype=tf.int32)
x_as_string = tf.map_fn(lambda xi: tf.strings.format('{}', xi), x, dtype=tf.string)

with tf.Session() as sess:
  res = sess.run(x_as_string)
  print(res)
  # [b'1' b'2' b'3']

For Tensorflow v2,

import tensorflow as tf

x = tf.constant([1, 2, 3], dtype=tf.int32)
x_as_string = tf.map_fn(lambda xi: tf.strings.format('{}', xi), x, dtype=tf.string)

print(x_as_string.numpy())
# [b'1' b'2' b'3']

Upvotes: 2

bidai
bidai

Reputation: 221

tf.as_string() Converts each entry in the given tensor to strings. Supports many numeric

Upvotes: 5

Related Questions