Я хотел бы записать записи примера tenorflow в TFRecordWriter из графа, сгенерированного AutoGraph.
В документации для тензорного потока 2.0 говорится следующее:
Самый простой способ обработки Нескалярные особенности - использовать tf.serialize_tensor для преобразования тензоров в двоичные строки. Строки являются скалярами в тензорном потоке.
Однако tf.io.serialize_tensor
возвращает тензор байтовой строки. Для создания Прото примера требуется список байтов, а не тензор.
Как мне записать tf.train.Example в запись tf из графика?
Код для воспроизведения:
%tensorflow_version 2.x
import tensorflow as tf
@tf.function
def example_write():
writer = tf.io.TFRecordWriter("test.tfr")
x = tf.constant([[0, 1], [2, 3]])
x = tf.io.serialize_tensor(x)
feature = {
"data": tf.train.Features(
bytes_list=tf.train.BytesList(value=[x]))
}
ex = tf.train.Example(features=tf.train.Features(
feature=feature))
writer.write(ex.SerializeToString())
example_write()
и ошибка
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-df8a97eb17c9> in <module>()
12 writer.write(ex.SerializeToString())
13
---> 14 example_write()
8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
966 except Exception as e: # pylint:disable=broad-except
967 if hasattr(e, "ag_error_metadata"):
--> 968 raise e.ag_error_metadata.to_exception(e)
969 else:
970 raise
TypeError: in user code:
<ipython-input-6-df8a97eb17c9>:6 example_write *
feature = {
TypeError: <tf.Tensor 'SerializeTensor:0' shape=() dtype=string> has type Tensor, but expected one of: bytes