gpt4 book ai didi

neural-network - Keras 的 fit_generator 中 nb_epoch 的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 00:35:06 24 4
gpt4 key购买 nike

似乎我可以通过使 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?

最佳答案

是的 - 您在使用 keras.fit_generator 时是对的这两种方法是等效的。但是 - 保留 epochs 的原因有很多是合理的:

  • 日志:在这种情况下 epoch包括您想要记录一些关于训练的重要统计数据的数据量(例如时间或时期结束时的损失)。
  • 保持目录结构 当您使用生成器从硬盘加载数据时 - 在这种情况下 - 当您知道目录中有多少文件时 - 您可以调整 batch_sizenb_epoch到这样的值,epoch 将包括遍历数据集中的每个示例。
  • 使用时保持数据结构flow发电机 - 在这种情况下,当你有例如一组图片加载到你的Python并且您想使用 Keras.ImageDataGenerator应用不同类型的数据转换,设置 batch_sizenb_epoch以这种方式,epoch 包括遍历数据集中的每个示例可能会帮助您跟踪训练过程的进度。
  • 关于neural-network - Keras 的 fit_generator 中 nb_epoch 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882280/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com