【问题标题】:Incremental model training with tensorflow使用 tensorflow 进行增量模型训练
【发布时间】:2020-11-12 08:50:45
【问题描述】:

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

    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)

我的想法是记住到目前为止训练的系数,用它们初始化一个模型,然后用新的数据部分再次重复训练。对每个输入重复。这是正确的方法吗?该模型可能会在以后升级为更复杂的东西..

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    听起来您在谈论在线训练,即在使用传入数据的同时不断训练模型。你是对的,你应该能够从你离开的地方继续并输入新数据。您需要的是一种在培训课程之间保存和加载变量的方法。您可以使用 tf.Saver 在“原始”张量流中执行此操作。

    您也可以使用 tf.contrib.learn.Estimator 为您执行此操作。你只需给它一个 model_fn 来构建你的模型,以及一个 model_dir 来保存模型,它会处理剩下的事情。当然,tf.contrib.learn.LinearEstimator 中已经有了线性模型。使用估算器,只要有新数据,您只需调用 fit(...) ,它将加载您的变量并继续运行您定义的训练步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      相关资源
      最近更新 更多