评估scipy迭代之间的验证损失?

时间:2020-07-18 22:05:59

标签: tensorflow callback

我不是在使用keras模型,而是在使用简单的自建多层前馈神经网络。我正在使用scipy优化器界面。这是与优化程序有关的简单代码:

myoptimizer = tf.contrib.opt.ScipyOptimizerInterface(myloss, method = 'L-BFGS-B', options = {'maxiter':1000})

myoptimizer.minimize(sess, 
        feed_dict = tf_dict_train,         
        fetches = [myloss], 
        loss_callback = mycallback)

def mycallback(fetched_train_loss):

    print('Train loss=', fetched_train_loss)

    valid_loss = sess.run(loss, tf_dict_valid)
    print('validation loss=',valid_loss)

    return

我的目标是找出L-BFGS-B优化每次迭代中的验证损失。因此,我尝试评估mycallback()中的损失值。

可以从fetches获得火车损失,没问题。但是,当我使用mycallback()评估tf_dict_valid中的验证损失时,它不使用优化中的更新权重。因此,我对所有回调都使用相同的valid_loss

我的问题:

  1. 如何获得mycallback()中每次迭代评估的验证损失?即在每次回调中反映了更新的权重。

  2. 如果我不能这样做,我是否可以在每次迭代中至少以某种方式在myloss上获得tf_dict_valid的评估?也许第二个回调函数可以获取在我的tf_dict_valid字典中求值的值?

0 个答案:

没有答案