【问题标题】:How to create multiple instances of a learning model in Tensorflow, CNN using python?如何使用python在Tensorflow、CNN中创建学习模型的多个实例?
【发布时间】:2019-11-08 03:16:49
【问题描述】:

我有一个可以实例化对象的类 et = EyeTracker() 其中 EyeTracker() 是一个具有 init 构造函数的类,可以在 here 中找到。实际上我想创建多个模型并将一个模型的某些部分分配给新创建的模型并丢弃旧模型。我在下面收到错误。任何帮助将不胜感激。我真的被困住了。我也出于类似目的问了一个问题here。因此,欢迎这两个答案。

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() 创建的。您的意思是在 VarScope 中设置 reuse=tf.AUTO_REUSE 吗? 如果我的问题很烦人,我真的很抱歉。

【问题讨论】:

    标签: python tensorflow conv-neural-network


    【解决方案1】:

    部分解决。我将默认构造函数 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 2021-09-26
      • 1970-01-01
      相关资源
      最近更新 更多