我试图通过以下代码来训练模型。
sess.run([train_op, model.global_step, model.loss, model.prediction], feed_dict)
但是,我发现运行“ model.prediction”时内存使用量动态增加。
在迭代过程中,我从不保留“ sess.run()”的结果。
“ model.prediction”为
@property
def prediction(self):
return [tf.argmax(self.logits_b, 1),
tf.argmax(self.logits_m, 1),
tf.argmax(self.logits_s, 1),
tf.argmax(self.logits_d, 1)]
我不知道为什么会这样。 请帮助我。
答案 0 :(得分:1)
每次使用属性prediction
时,都会在图形中创建新操作。您应该只创建一次操作,然后将其返回到属性中:
def create_model(self):
# Hypothetical function that creates the model, only called once
# ...
self._prediction = (tf.argmax(self.logits_b, 1),
tf.argmax(self.logits_m, 1),
tf.argmax(self.logits_s, 1),
tf.argmax(self.logits_d, 1))
# ...
@property
def prediction(self):
return self._prediction