我想在Tensoflow中编写一些代码,可以训练模型,在训练期间运行验证,最后报告测试数据的结果,以获得通过验证数据选择的最佳模型。我想知道以下结构正确的方法吗? [考虑变量范围,参数共享,保存/恢复,..]
MyModel.py
class MyModel(object):
def build_model(self, reuse):
with tf.variable_scope("Model", reuse = reuse) as scope:
self.v1 = tf.get_variable("v1", [1, 2])
// rest of the codes
def train(self, sess):
self.build_model(False)
s1 = tf.train.Saver()
init_opt =tf.global_variables_initializer()
sess.run(init_opt)
// model training
// ...
s1.save(sess, "/tmp/model.ckpt")
def val(self, sess):
self.build_model(True)
s2 = tf.train.Saver()
// do the validation
s2.save(sess, "/tmp/best_model.ckpt")
def test(self, sess):
self.build_model(False)
s3 = tf.train.Saver()
s3.restore(sess, "/tmp/model_best.ckpt")
//rest of the codes ...
我在两个不同的文件中写了以下函数:
train.py:
with tf.Session() as sess:
mtrain = MyModel()
mval = MyModel()
for iter_i in range(num_training_iters):
mtrain.train(sess)
mval.val(sess)
test.py
with tf.Session() as sess:
mtest = MyModel()
mtest.test(sess)
我查看了Tensorflow教程,但没有一个有这种结构。 任何帮助都将受到高度赞赏。
由于
答案 0 :(得分:0)
您可能会觉得这很有用:
https://gist.github.com/earonesty/ac0617a5672ae1a41be1eaf316dd63e4
它允许您保存/恢复全局变量和范围变量:
来自varlib import vartemp
x = 3
y = 4
with vartemp({'x':93,'y':94}):
print(x)
print(y)
print(x)
print(y)