在 for 循环中训练时,tensorflow 是否会重新初始化权重?
Does tensorflow re-initialize weights when training in a for loop?
我正在 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))
权重在定义层时初始化(在 fit
之前)。之后它不会重新初始化权重 - 即使您多次调用 fit。
为了证明是这种情况,我在常规训练时期绘制了决策边界(通过调用 fit
然后 predict
):
我正在 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))
权重在定义层时初始化(在 fit
之前)。之后它不会重新初始化权重 - 即使您多次调用 fit。
为了证明是这种情况,我在常规训练时期绘制了决策边界(通过调用 fit
然后 predict
):