我已经在TensorFlow中为TD(Lambda)编写了一个自定义训练循环,我想创建一个日志,其中存储了在每个时期计算的一些变量。
在numpy中,我会写类似 list.append(variable_that_I_want_to_save) 在每个时代结束时
但是在热切的执行中这是不可能的。
如何保存迭代过程中tf.function中的tf.Variable值?
非常感谢您做出的努力-我想这肯定是一件微不足道的事情。
PS: 我应该补充说,训练是在一个类中进行的,所以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
由于NDA,我无法分享更具体的信息,但是我要记录的是x所取的值
答案 0 :(得分:0)
这样的事情对您有用吗? 我已经在该类中添加了一个属性,它将存储日志。
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_variable
trainer = Trainer(model)
trainer.train(xs, ys, lambda)
log = trainer.log_variable()