は、私がtf.train.SequenceExample形式に自分のデータを構造化し、TFRecordファイルにそれを格納しています。新しいデータセットAPIを使用して、の埋め込みバッチを生成するを使用したいと思います。 the documentationにはpadded_batchを使用する例がありますが、私のデータではのpadded_shapesの値はどうなっているのでしょうか。私は次のPythonコードを書かれているバッチにTFrecordファイルを読み込むためのDataSet APIを使用してtf.train.SequenceExampleデータのTensorflowでパッディングされたバッチを作成するにはどうすればよいですか? Tensorflow</strong><strong>に<strong>LSTMモデル</strong>を訓練するため
は:
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
を使用する場合バリアントは、私は次のエラーを取得する:
TypeError: If shallow structure is a sequence, input must also be a sequence. Input has type: .
あなたは私が私がpadded_shapesパラメータに渡すべきかを考え出す助けることができますか?
(私はこれのために、スレッドとキューを使用したサンプルコードがたくさんあるけど、私はむしろ、このプロジェクトのために新しいデータセットのAPIを使用すると思います)
ありがとうMarijn!あなたの質問は私を大いに助けました! –