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