pythonのgeneratorのインスタンスの使用方法について
Kerasのジェネレーターを使用していてテストのpredictが毎回変化してしまったので、Kerasのジェネレーターでサンプルが列挙される順番についてで勉強をしていました。
結論にはジェネレーターのインスタンスを一度宣言して使い回すとイテレーションの位置が継続されるからインスタンスの使いまわしはしない方がいいとのことでした。
以下、サイトのコードを書いておきます。
python
1def generator(batch_size): 2 X_cache, y_cache = [], [] 3 while True: 4 for i in range(10): 5 X_cache.append(i) 6 y_cache.append(i) 7 if len(X_cache)==batch_size: 8 X_batch = np.asarray(X_cache) 9 y_batch = np.asarray(y_cache) 10 X_cache, y_cache = [], [] 11 yield X_batch, y_batch 12 13from keras.layers import Lambda, Input 14from keras.models import Model 15import numpy as np 16 17input = Input((1,)) 18x = Lambda(lambda x: x)(input) 19model = Model(input, x) 20 21gen = generator(3) 22result1 = model.predict_generator(gen, steps=1, max_queue_size=3) 23result2 = model.predict_generator(gen, steps=1, max_queue_size=3) 24print(result1) 25print(result2)
出力
python
1[[0.] 2 [1.] 3 [2.]] 4[[5.] 5 [6.] 6 [7.]]
そこでたとえインスタンスを使いまわしにしても一回resetすれば最初から始まるようなメソッドなどはないかと探しています。
具体的には、以下のような変換が施せればいいと考えています。
python
1gen = generator(3) 2result1 = model.predict_generator(gen, steps=1, max_queue_size=3) 3 4genをリセットする何か。 5 6result2 = model.predict_generator(gen, steps=1, max_queue_size=3) 7print(result1) 8print(result2)
出力
python
1[[0.] 2 [1.] 3 [2.]] 4[[0.] 5 [1.] 6 [2.]]
具体的な方法が分かる方がいれば教えて頂けると嬉しいです!
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/09 02:37