我不是在使用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
。
我的问题:
如何获得mycallback()
中每次迭代评估的验证损失?即在每次回调中反映了更新的权重。
如果我不能这样做,我是否可以在每次迭代中至少以某种方式在myloss
上获得tf_dict_valid
的评估?也许第二个回调函数可以获取在我的tf_dict_valid
字典中求值的值?