static void UpdateLearningRate(IOptimizer optimizer, Variable step, LearningRateSchedule learningRateSchedule) { Tensor learningRate = learningRateSchedule.Get(step: step); var optimizerLearningRate = optimizer.DynamicGet <Variable>("lr"); optimizerLearningRate.assign(learningRate); }
static void WriteLosses(IOptimizer optimizer, Variable globalSteps, Loss losses) { // tf v1 does not actually export summary.experimental.set_step context.context_().summary_step = globalSteps; void Scalar(string name, IGraphNodeBase value) => summary_ops_v2.scalar(name, value, step: globalSteps); Scalar("lr", optimizer.DynamicGet <Variable>("lr")); Scalar("loss/total_loss", losses.GIUO + losses.Conf + losses.Prob); Scalar("loss/giou_loss", losses.GIUO); Scalar("loss/conf_loss", losses.Conf); Scalar("loss/prob_loss", losses.Prob); }