Как создать несколько экземпляров модели обучения в Tensorflow, CNN, используя python? - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть класс, который может создавать экземпляр объекта et = EyeTracker () , где EyeTracker () - это класс с init Конструктор как можно найти здесь . на самом деле я хочу создать несколько моделей и назначить некоторые части одной модели вновь созданной модели и удалить старую модель. Я получаю сообщение об ошибке ниже. Любая помощь будет высоко оценена. Я действительно застрял. Я также задал вопрос для аналогичной цели здесь . Так что оба ответа приветствуются.

def train(args):
    train_data, val_data = load_data(args.input)
    train_data = prepare_data(train_data)
    val_data = prepare_data(val_data)
    with tf.variable_scope("", reuse=True) as scope:
        et = EyeTracker()
        train_loss_history, train_err_history, val_loss_history, val_err_history = et.train(train_data, val_data, \
                                            lr=args.learning_rate, \
                                            batch_size=args.batch_size, \
                                            max_epoch=args.max_epoch, \
                                            min_delta=1e-4, \
                                            patience=args.patience, \
                                            print_per_epoch=args.print_per_epoch,
                                            out_model=args.save_model)
        save some parts of the (et)
        scope.reuse_variables()
        et = EyeTracker()
        Assign some parts of previous (et) to the new one and continue training
        train_loss_history, train_err_history, val_loss_history, val_err_history = et.train(train_data, val_data, \
                                            lr=args.learning_rate, \
                                            batch_size=args.batch_size, \
                                            max_epoch=args.max_epoch, \
                                            min_delta=1e-4, \
                                            patience=args.patience, \
                                            print_per_epoch=args.print_per_epoch,
                                            out_model=args.save_model)

ошибка:

Переменная conv1_eye_w не существует или не была создана с помощью tf.get_variable (). Вы хотели установить reuse = tf.AUTO_REUSE в VarScope? мне очень жаль, если мой вопрос раздражает.

1 Ответ

0 голосов
/ 07 ноября 2019

Частично разрешено. Я изменил конструктор по умолчанию init на функцию-член initialize() и передал значения в качестве аргументов, как показано ниже.

g = tf.Graph()
with g.as_default(): 
            et = EyeTracker()
            et.initialize(96,256,384,64,96,256,384,64)            
            result_temp = et.train(n_epoch, train_data, val_data, lr=args.learning_rate, batch_size=args.batch_size, max_epoch=args.max_epoch, min_delta=1e-4, patience=args.patience, print_per_epoch=args.print_per_epoch, out_model=args.save_model)

g = tf.Graph()
with g.as_default(): 
            et = EyeTracker()
            et.initialize(80,256,384,64,96,256,384,64)           
            result_temp = et.train(n_epoch, train_data, val_data, lr=args.learning_rate, batch_size=args.batch_size, max_epoch=args.max_epoch, min_delta=1e-4, patience=args.patience, print_per_epoch=args.print_per_epoch, out_model=args.save_model)
...