在自定义训练循环中记录tf.variable

我在TensorFlow中为TD(Lambda)编写了一个自定义训练循环,我希望创建一个日志,用于存储在每个epoch期间计算的一些变量。

在numpy中,我会在每个epoch结束时写类似于list.append(variable_that_I_want_to_save)的代码

但在tf急切执行模式下这是不可行的。

如何保存tf.function中tf.Variable在迭代过程中取的值呢?

非常感谢您提前付出的努力来回复这个问题 – 我认为这应该是一个相当简单的事情。

附注:我应该补充一点,训练是在一个类中进行的,所以tf.concat不能解决这个问题,因为我无法将连接后的张量重复赋值给training_loop类的实例变量…

以下是我所做事情的伪代码:

class Trainer:   def __init__(self, model):      self.model = model   def train(xs,ys,lambda):      for x,y in zip(xs,ys):         learn(x,y,lambda)   def learn(x,y,lambda):      err = y - self.model(x)      model.apply_weights( grad(err) * self.custom_alpha( self.model.weights )   def custom_optimizer(  weights ):      x = some operations with weights       alpha = some operation with x      return alpha

由于保密协议,我无法分享更多具体信息,但我希望记录的是x取的值


回答:

像这样的解决方案对您有用吗?我在类中添加了一个属性来存储日志。

class Trainer:    def __init__(self, model):        self.model = model        self.log_variable = []    def train(self, xs, ys, lambda):        for x,y in zip(xs,ys):            v = learn(x,y,lambda)            self.log_variable.append(v.numpy())    @tf.function    def learn(self, x, y, lambda):        err = y - self.model(x)        model.apply_weights( grad(err) * self.custom_alpha( self.model.weights )        return variable_that_I_want_to_save    def custom_optimizer( weights ):        x = some operations with weights         alpha = some operation with x        return alpha    def get_log(self):        return self.log_variabletrainer = Trainer(model)trainer.train(xs, ys, lambda)log = trainer.log_variable()

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注