Je souhaite convertir un fichier .csv en enregistrement TF. Mon problème maintenant, python_io n'existe pas dans Tensorflow 2.0.
I get this error: File "generate_tfrecord.py", line 102, in <module> main() File "generate_tfrecord.py", line 89, in main writer = tf.python_io.TFRecordWriter(FLAGS.output_path) AttributeError: module 'tensorflow' has no attribute 'python_io'
writer=tf.python_io.TFRecordWriter(FLAGS.output_path) path = os.path.join(FLAGS.image_dir) examples = pd.read_csv(FLAGS.csv_input) grouped = split(examples, 'filename') for group in grouped: tf_example = create_tf_example(group, path) writer.write(tf_example.SerializeToString()) writer.close() output_path = os.path.join(os.getcwd(), FLAGS.output_path)
Que dois-je utiliser à la place?
3 Réponses :
Selon la documentation , la python Le package .io
a été déplacé vers un nouveau package appelé io
. Échangez-les et cela fonctionne.
writer = tf.io.TFRecordWriter(FLAGS.output_path) # ...
Dans TF 2.0, tf.python_io.TFRecordWriter ()
a été changé en tf.io.TFRecordWriter()
Tf.io.TFRecordWriter est le moyen officiel d'écrire des tfrecords pour de petits ensembles de données. Vous pouvez également essayer apache beam pour paralléliser la conversion de CSV en tfrecords en CSV plus grands.
import tensorflow as tf import numpy as np tf.debugging.set_log_device_placement(True) with tf.io.TFRecordWriter('data.tfrecords') as file_writer: x = tf.random.normal([100, 1]) y = tf.random.normal([100, 1]) feature = { "x": tf.train.Feature(float_list=tf.train.FloatList(value=x.numpy().astype(np.float))), "y": tf.train.Feature(float_list=tf.train.FloatList(value=y.numpy().astype(np.float))) } example = tf.train.Example(features=tf.train.Features(feature=feature)) record_bytes = example.SerializeToString() file_writer.write(record_bytes) print(record_bytes)