Запись tfrecords в apche_beam с java - PullRequest
0 голосов
/ 16 апреля 2020

Как я могу написать следующий код в java? Если у меня есть список записей / диктов в java, как я могу написать код луча, чтобы записать их в tfrecords, где tf.train.Examples сериализуются. Есть много примеров, чтобы сделать это с python, ниже приведен один пример в python, как я могу написать те же логи c в java?

import tensorflow as tf
import apache_beam as beam
from apache_beam.runners.interactive import interactive_runner
from apache_beam.coders import ProtoCoder

class Foo(beam.DoFn):
  def process(self, element, *args, **kwargs):
    import tensorflow as tf

    foo = element.get('foo')
    bar = element.get('bar')

    feature = {
      "foo":
        tf.train.Feature(bytes_list=tf.train.BytesList(value=[foo.encode('utf-8')])),
      "bar":
        tf.train.Feature(bytes_list=tf.train.BytesList(value=[bar.encode('utf-8')]))
    }
    example_proto = tf.train.Example(features=tf.train.Features(feature=feature))
    yield example_proto

p = beam.Pipeline(runner=interactive_runner.InteractiveRunner())

records = p | "Create records" >> beam.Create([{'foo': 'abc', 'bar': 'pqr'} for _ in range(10)])
tf_examples = records | "Convert to tf examples" >> beam.ParDo(Foo())
tf_examples | "Dump Records" >> beam.io.WriteToTFRecord(file_path_prefix="./output/data-",
                                                    coder=ProtoCoder(tf.train.Example()),
                                                    file_name_suffix='.tfrecord', num_shards=2)

p.run()

1 Ответ

0 голосов
/ 17 апреля 2020

Я пытался сделать это с java, но я все еще получаю некоторые проблемы. Ссылка на новый вопрос здесь Записать tfrecords из луча конвейера? .

...