Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow:使用不同的损失函数恢复训练_Python_Tensorflow - Fatal编程技术网

Python TensorFlow:使用不同的损失函数恢复训练

Python TensorFlow:使用不同的损失函数恢复训练,python,tensorflow,Python,Tensorflow,这个问题的精神与我的相似,但我就是不能让它工作,所以我需要一些帮助 目标:使用TensorFlow和一个相当粗糙的损失函数预先训练网络,以便所有权重/偏差都在正确的范围内。然后,继续使用更复杂的损失函数进行训练,以微调模型 尝试接近:在预训练阶段后,保存模型(使用tf.train.Saver()),然后立即重新加载变量并更改损失函数。下面我添加了一个极简的非工作示例: # Crude loss function loss_fn_1 = tf.reduce_mean(tf.losses.huber

这个问题的精神与我的相似,但我就是不能让它工作,所以我需要一些帮助

目标:使用TensorFlow和一个相当粗糙的损失函数预先训练网络,以便所有权重/偏差都在正确的范围内。然后,继续使用更复杂的损失函数进行训练,以微调模型

尝试接近:在预训练阶段后,保存模型(使用
tf.train.Saver()
),然后立即重新加载变量并更改损失函数。下面我添加了一个极简的非工作示例:

# Crude loss function
loss_fn_1 = tf.reduce_mean(tf.losses.huber_loss(labels=box_in, predictions=box_out), name="loss")

# Less crude loss function
loss_fn_2 = tf.reduce_mean(model.IOU_loss(box_in, box_out), name="IOU_loss")

train_step = tf.train.AdamOptimizer(1e-4).minimize(loss_fn_1)
saver = tf.train.Saver()

# First round of training
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    # Train hard, fight easy
    saver.save(sess, savefile)

# Second round of training
with tf.Session() as sess:

    saver = tf.train.import_meta_graph(savefile_meta)
    saver.restore(sess, tf.train.latest_checkpoint(savedir))

    graph = tf.get_default_graph()
    IOU_loss = graph.get_tensor_by_name("IOU_loss:0")

    train_step = tf.train.AdamOptimizer(1e-4).minimize(IOU_loss)

    # 'Eye of the tiger'-type of training

我尝试了多种组合,包括在重新启动
tf.Session()
之前或之后重新定义
train\u步骤,以及加载/重命名各种其他变量。主要的问题是,我对自己正在做的事情,或者错误的真正含义一无所知,而我的随机游走并没有让我取得任何进展。

在随机游走了一段时间后,我发现以下解决方案对我有效:你可以简单地定义第二个优化函数-见下面的示例

# Crude loss function
loss_fn_1 = tf.reduce_mean(tf.losses.huber_loss(labels=box_in, predictions=box_out), name="loss")

# Less crude loss function
loss_fn_2 = tf.reduce_mean(model.IOU_loss(box_in, box_out), name="IOU_loss")

trainer1 = tf.train.AdamOptimizer(1e-4).minimize(loss_fn_1)
trainer2 = tf.train.AdamOptimizer(1e-4).minimize(loss_fn_2)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    # First round of training
    for i in range(100):
        trainer1.run()

    # Second round of training
    for i in range(1000):
        trainer2.run()
如果您认为其他解决方案更可取,请评论/回答