介绍了generator–用于逐批次向训练提供数据和网络模型。使用了三层卷积神经网络,flatten层,全连接层,4个子全连接层和一个Merge层。这个网络在经过50个epoch,每个epoch32000张验证码训练后,到达了40%的准确率(categories_accuracy)。实际准确率达到了80%左右。文中会解释这两个值之间的差异。
我们首先使用keras框架来快速实现网络模型,验证模型的可行性。然后我们使用Tensorflow来再次实现这个网络模型,以比较两种实现方法的异同之处。
Keras提供了一种data feeding机制,允许你不必一次把全部数据集载入内存,而是可以根据需要,一次取出一个batch来进行训练。这就是它的Generator机制。
Generator
Keras在fit之外,还提供了一个fit_generator函数来启动训练,但fit_generator这个版本允许你不必一次将全部数据集输入,而是可以一次提供一个batch的数据以供训练。fit_generator的原型是:
fit_generator(self, generator, samples_per_epoch, nb_epoch, verbose=1, callbacks=[], validation_data=None, nb_val_samples=None, class_weight=None, max_q_size=10)
这里的关键是第二个参数,generator。它是一个生成器函数,其输出应该为:
一个形如(inputs,targets)的tuple
或者,一个形如(inputs, targets,sample_weight)的tuple。
所有的返回值都应该包含相同数目的样本。生成器将无限在数据集上循环。每个epoch以经过模型的样本数达到samples_per_epoch时,记一个epoch结束。下面是一个生成器的示例:
因有较多代码和图片,知乎编辑不便,请移步【余下全文】阅读。