【问题标题】:Does tensorflow re-initialize weights when training in a for loop?在 for 循环中训练时,tensorflow 是否会重新初始化权重?
【发布时间】:2022-01-20 14:54:19
【问题描述】:

我正在for 循环中训练模型,因为...我可以。 我知道有像tf.Dataset API 和generators 这样的替代方法来从磁盘流式传输数据,但我的问题是关于循环的具体情况。

TF 是否在每个循环开始时重新初始化模型的权重?还是只在模型第一次实例化时才进行初始化?

编辑:

for msn in LIST:

    data = pd.read_parquet(
        "03 - Data",
        engine='pyarrow')
    data = data[column_order]
    data.rename(columns={"Flight_Id_Int":"Flight_Id"}, inplace=True)     
    
    
    """ DATA PREPARATION AND FORMATING """
    data_clean = clean_and_prepare(data, SEQ_LEN, input_type=model_type, smooth=True)
        
    # To keep the chonological order of flight we don't random shuffle   
    train_idx = np.arange(0, int(len(data_clean)*0.9))
    test_idx = np.arange(int(len(data_clean)*0.9), len(data_clean))

    
    train_df = tf.data.Dataset.from_tensor_slices(
        (data_clean[train_idx], data_clean[train_idx])
        ).batch(BATCH_SIZE)
    
    test_df = tf.data.Dataset.from_tensor_slices(
        (data_clean[test_idx], data_clean[test_idx])
        ).batch(BATCH_SIZE)


    """ MODEL TRAINING """
    history = model.fit(train_df,
                epochs=EPOCHS,
                validation_data=(test_df),
                callbacks=[tf.keras.callbacks.EarlyStopping(
                    monitor="val_loss",
                    patience=15,
                    mode="min",
                    restore_best_weights = True)])
    
    plot_train_history(history, "Autoencorder {0} - MSN: {1}".format(model_type, msn))

【问题讨论】:

  • 你应该显示循环。否则很难说。
  • @AKX 我已经编辑了帖子。
  • "还是只在模型第一次实例化时才进行初始化?"是的。

标签: python tensorflow deep-learning tensorflow2.0


【解决方案1】:

权重在定义层时初始化(fit 之前)。之后它不会重新初始化权重 - 即使您多次调用 fit。

为了证明这种情况,我在常规训练时期绘制了决策边界(通过调用fit,然后调用predict):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2021-10-02
    • 2018-07-13
    • 2020-02-09
    • 1970-01-01
    • 2017-09-15
    • 2017-12-16
    相关资源
    最近更新 更多