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