Какова структура "ПРАВО" для сохранения/восстановления модели в Tensorflow во время обучения/val/test?

Я хочу написать некоторые коды в 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, но ни одна из них не имеет такой структуры. Любая помощь будет высоко оценена.

Спасибо

Ответ 1

Вы можете найти это полезным:

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)