2017-12-22 6 views
0

私は、トレーニング画像を作成しているデータジェネレータを持っています。このPythonデータジェネレーターを使ってTensorflowモデルにデータをフィードしたいのですが、ジェネレーターをTensorflowテンソルに変換する方法がわかりません。私はKerasのfit_generator()関数に似た何かを探しています。PythonデータジェネレータをTensorflowテンソルに変換するには?

ありがとうございます!

+1

具体的なエラーは何ですか?何を試してみましたか? fit_generator引数として_generator_をとります。他に何が必要なのでしょうか? – putonspectacles

答えて

2

tf.data.Dataset.from_generator()メソッドは、Pythonジェネレータをtf.Tensorオブジェクトに変換する方法を提供します。このオブジェクトはジェネレータの各要素に評価されます。

あなたはタプルを生成する単純な発電機を持っている(その代わりにリストまたはnumpyのアレイを生成することがありました)としましょう:

def g(): 
    yield 1, 10.0, "foo" 
    yield 2, 20.0, "bar" 
    yield 3, 30.0, "baz" 

あなたは、その後に、tf.data.Datasetに最初の発電機を変換するtf.data APIを使用することができますtf.data.Iterator、最後にtf.Tensorのタプルに変換されます。あなたは、あなたのTensorFlowモデルへの入力としてint_tensorfloat_tensor、およびstr_tensorを使用することができます

dataset = tf.data.Dataset.from_generator(g, (tf.int32, tf.float32, tf.string)) 

iterator = dataset.make_one_shot_iterator() 

int_tensor, float_tensor, str_tensor = iterator.get_next() 

。詳細はtf.data programmer's guideをご覧ください。

0

私は純粋なTensorflowを使用しているときにデータを供給するために発電機を使用する必要はありません。 そして、Kerasを使用しているときに、なぜTensorflowスタイルでデータを供給する必要があるのですか?つまり、Kerasの関数fit()があります。

関連する問題