3
num_samplesを大きくしてnb_epoch = 1にすることで、まったく同じ結果が得られるようです。私は、複数のエポックの目的が同じデータに対して何度も繰り返すことになっていると思っていましたが、ケラスは各エポックの終わりにジェネレータを再インスタンス化しません。それだけで続ける。このオートエンコーダを訓練例えば:私はと同じ結果を得るようKerasのfit_generatorのnb_epochの目的は何ですか?
import numpy as np
from keras.layers import (Convolution2D, MaxPooling2D,
UpSampling2D, Activation)
from keras.models import Sequential
rand_imgs = [np.random.rand(1, 100, 100, 3) for _ in range(1000)]
def keras_generator():
i = 0
while True:
print(i)
rand_img = rand_imgs[i]
i += 1
yield (rand_img, rand_img)
layers = ([
Convolution2D(20, 5, 5, border_mode='same',
input_shape=(100, 100, 3), activation='relu'),
MaxPooling2D((2, 2), border_mode='same'),
Convolution2D(3, 5, 5, border_mode='same', activation='relu'),
UpSampling2D((2, 2)),
Convolution2D(3, 5, 5, border_mode='same', activation='relu')])
autoencoder = Sequential()
for layer in layers:
autoencoder.add(layer)
gen = keras_generator()
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
history = autoencoder.fit_generator(gen, samples_per_epoch=100, nb_epoch=2)
それはそうです(samples_per_epoch = 100、nb_epoch = 2)私がそうであるように(samples_per_epoch = 200、nb_epoch = 1)。私はfit_generatorを意図して使用していますか?