【发布时间】:2017-01-26 20:21:32
【问题描述】:
似乎我可以通过增大 num_samples 并保持 nb_epoch=1 来获得完全相同的结果。我认为多个 epoch 的目的是多次迭代相同的数据,但 Keras 不会在每个 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?
【问题讨论】:
标签: neural-network keras training-data