由于数据量太大,想用一部分数据训练,把模型存和参数起来。然后不断增加一部分数据,再次训练,如何完成呢?用keras写的,tensorflow可以实现吗?


Keras 可以保存模型:

FAQ - Keras Documentation

另外,Keras 并不需要把所有的数据都读到内存里,利用 model 类的 fit_generator 方法可以每次提供一部分数据训练模型。


训练不必一次性把所有数据都读到内存(无论CPU还是GPU)中,每次读一个batch就可以;同时,keras可以把保存模型,可以load已经保存的模型,在进行fine-tuning。


Keras是可以实现的,每次保存参数,下次训练之前,把参数load进去。但是这样的话,你训练出来的网路可能基本是基于最后一批数据的。假设你每批数据100个样品,batch size = 5, 共计20个batch,每个epoch把这20个batch依次走一遍,这是正常的training。 但是这样总100个样品的数据你总共15批,可以看做总计有15个超级batch,每个超级batch的size是100。如果你想这么加数据进行training,这15个超级batch不能只跑一次吧,只要也要跑几个这种超级epoch才能比较准吧。

可以再写个外部循环,每次从硬碟上把这100个样品读进内存,完了在删了读下一个。


tensorflow中可以使用tf.train.Saver()和restore()保存和提取网路的参数。keras框架是基于tensorflow的,可以说底层就是tf,可以用tensorflow实现。


如果不能,那你觉得fine-tune是怎么做的。。把input路径改成新的就好了

没有那么大的硬碟就尽量别玩儿dl了...

tensorflow可以实现,但是你这种训练方式不好...白瞎了那么多数据了。


推荐阅读:
相关文章