首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于tensorflow的增量模型训练

基于tensorflow的增量模型训练
EN

Stack Overflow用户
提问于 2017-01-07 14:15:30
回答 1查看 3.5K关注 0票数 3

我有一个简单的线性模型,它输入(x,y)对,并在y= b0 + b1 *x中演绎b0和b1;关键代码如下。它在已知大小的数据集上进行训练。现在我想不断地增加训练的能力:即添加其他每一批(x,y),并根据新的数据更新系数。将有无限的投入。

代码语言:javascript
复制
    x = tf.placeholder(tf.float32, [data_len], name="x")
    y = ...
    b0 = tf.Variable([0.8], trainable=True)
    b1 = ...
    #the model
    y = tf.add(tf.mul(x, b1), b0)
    y_act = tf.placeholder(tf.float32, [data_len], name="y_act")
    error = tf.sqrt((y - y_act) * (y - y_act))
    train_step = tf.train.AdamOptimizer(0.01).minimize(error)
    x_in = ...
    y_in = ...
    init = tf.initialize_all_variables()
    sess.run(init)
    feed_dict = { ... }
    fetches_in = { b0: b0, b1: b1, y: y, train_step: train_step }
    for i in range(0, 50):
        fetches = sess.run(fetches_in, feed_dict)

我的想法是记住经过如此远的训练的系数,在其中加入一个模型,然后再用数据的新部分重复训练。每次输入重复。这是个正确的方法吗?这个模型可能会在以后推广到更复杂的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 13:19:10

听起来你说的是在线培训,即在同时使用输入数据的同时,不断地训练一个模型。你是对的,你应该能够拿起你停下来的地方,输入新的数据。您需要的是一种在培训期间保存和加载变量的方法。您可以使用tf.Saver在“原始”tensorflow中执行此操作。

您还可以使用tf.contrib.learn.Estimator为您完成此操作。您只需给它一个构造模型的model_fn,并给它一个model_dir来保存模型,它就会处理剩下的部分。当然,在tf.contrib.learn.LinearEstimator中已经有了一个线性模型。使用估值器,您只需调用fit(.)每当您有新数据时,它将加载您的变量,并继续运行您定义的培训步骤。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41522364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档