debugging - Keras fit 和 fit_generator 返回完全不同的结果
问题描述
Keras fit 和 fit_generator 返回完全不同的结果, fit_generator 降低了近 20% 的精度。我确实在数据生成器中使用了 shuffle。我在下面附上了我的 data_generator。谢谢 !
def data_generator(input_x, input_y, batch_size = BATCH_SIZE):
loopcount = len(input_x) // batch_size
while True:
i = random.randint(0, loopcount - 1)
x_batch = input_x[i*batch_size:(i+1)*batch_size]
y_batch = input_y[i*batch_size:(i+1)*batch_size]
yield x_batch, y_batch
我的 model.fit_generator 如下所示:
model.fit_generator(generator = data_generator(x_train, y_train, batch_size = BATCH_SIZE),steps_per_epoch = len(x_train) // BATCH_SIZE, epochs = 20, validation_data = data_generator(x_val, y_val, batch_size = BATCH_SIZE), validation_steps = len(x_val) // BATCH_SIZE)
解决方案
TLDR;使用fit
而不是fit_generator
从 TensorFlow 2.x 开始,该fit
方法可以将生成器作为输入,因此fit_generator
我强烈建议不要使用fit
.
推荐阅读
- python - 使用函数 pandas 更快地找到最接近 lat long 的 Outer-Product-Like
- android - 片段不会立即被替换
- php - Codeignitor 错误号:1066“不是唯一的表/别名”
- julia - 为什么 trunc() 不将浮点数转换为整数?
- docker - docker v18.09中docker容器的shm挂载到主机有什么用
- objective-c - 如何比较闭包/块?
- jquery - 通过 Controller 方法的 $request 参数获取 $.ajax 发布的数据
- c++ - 我可以访问我的代码中的调用堆栈吗?
- discord.js - Discord.js - 如何使函数仅每 30 秒运行一次
- python - 在 Tkinter 中完成进程后如何再次启用元素