набор данных и каждая метка имеют разную длину, но одинаковый ранг.

ренировкиМодель LSTM вTensorflowЯ структурировал свои данные вtf.train.SequenceExample отформатировать и сохранить его вФайл TFRecord, Теперь я хотел бы использовать новый API DataSet длягенерировать мягкие партии для обучения, Вдокументация есть пример использования padded_batch, но для моих данных я не могу понять, какое значениеpadded_shapes должно быть.

Для чтения файла TFrecord в пакеты я написал следующий код Python:

import math
import tensorflow as tf
import numpy as np
import struct
import sys
import array

if(len(sys.argv) != 2):
  print "Usage: createbatches.py [RFRecord file]"
  sys.exit(0)


vectorSize = 40
inFile = sys.argv[1]

def parse_function_dataset(example_proto):
  sequence_features = {
      'inputs': tf.FixedLenSequenceFeature(shape=[vectorSize],
                                           dtype=tf.float32),
      'labels': tf.FixedLenSequenceFeature(shape=[],
                                           dtype=tf.int64)}

  _, sequence = tf.parse_single_sequence_example(example_proto, sequence_features=sequence_features)

  length = tf.shape(sequence['inputs'])[0]
  return sequence['inputs'], sequence['labels']

sess = tf.InteractiveSession()

filenames = tf.placeholder(tf.string, shape=[None])
dataset = tf.contrib.data.TFRecordDataset(filenames)
dataset = dataset.map(parse_function_dataset)
# dataset = dataset.batch(1)
dataset = dataset.padded_batch(4, padded_shapes=[None])
iterator = dataset.make_initializable_iterator()

batch = iterator.get_next()

# Initialize `iterator` with training data.
training_filenames = [inFile]
sess.run(iterator.initializer, feed_dict={filenames: training_filenames})

print(sess.run(batch))

Код работает хорошо, если я используюdataset = dataset.batch(1) (в этом случае не требуется заполнение), но когда я используюpadded_batch вариант, я получаю следующую ошибку:

Ошибка типа: если поверхностная структура является последовательностью, входные данные также должны быть последовательностью. Вход имеет тип:.

Можете ли вы помочь мне выяснить, что я должен передать заpadded_shapes параметр?

(Я знаю, что для этого есть много примеров кода, использующего потоки и очереди, но я бы предпочел использовать новый API DataSet для этого проекта)

Ответы на вопрос(0)

Ваш ответ на вопрос