【发布时间】:2020-07-08 06:03:30
【问题描述】:
我已经构建了一个模型拟合函数(如下所示),它被其他一些 Python 函数用来计算 RMSE(评估指标),目前它工作正常。
但是,我还想对以下代码实现另外两个方面。首先,我希望能够绘制训练和验证数据集的损失曲线(通常由代码中显示的 model.fit 函数作为历史对象返回)。其次,我还想实现对 model.fit 函数的 Tensorboard 回调。
我现在面临的挑战是,我不确定如何将这些额外的功能实现到下面的代码中,或者可能在这段代码中。
我尝试使用以下代码(在下面显示的主要 Python 函数中)返回历史记录:
history = model.fit(train_x, train_y, validation_split=0.3, epochs=n_epochs, batch_size=n_batch, verbose=1)
'''
'''
return model, history
但是,因为“历史”作为主函数中的对象返回,所以我无法在函数之外的任何地方使用此对象来绘制损失曲线。
# Python Function
def model_fit(train, config):
# Prepare data
data = series_to_supervised(train, n_input)
train_x, train_y = data[:, :-1], data[:, -1]
train_x = train_x.reshape((train_x.shape[0], n_seq, n_steps, 1))
# Define Model
model = Sequential()
model.add(TimeDistributed(Conv1D(filters=n_filters, kernel_size=n_kernel, activation='relu', input_shape=(None,n_steps,1))))
model.add(TimeDistributed(Conv1D(filters=n_filters, kernel_size=n_kernel, activation='relu')))
model.add(TimeDistributed(MaxPooling1D(pool_size=2)))
model.add(TimeDistributed(Flatten()))
model.add(Bidirectional(LSTM(n_nodes, activation='relu')))
model.add(Dense(n_nodes, activation='relu'))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam', metrics=['mse'])
# Fit Model
model.fit(train_x, train_y, validation_split=0.3, epochs=n_epochs, batch_size=n_batch, verbose=1)
return model
我是否可以在如图所示的 Python 函数中实现所有这些,以及如何实现?或者我是否需要将整个神经网络写成一个独立的可执行文件而不是一个函数?这样我就可以使用 History 对象并利用所有 Keras 回调?
我可以执行这个函数并立即自动返回历史对象和 Keras 回调吗?
任何建议或帮助将不胜感激。
【问题讨论】:
-
这是什么意思:但是,因为“历史”在主函数中作为对象返回,所以我无法在函数之外的任何地方使用该对象来绘制损失曲线。
-
@NicolasGervais 我的意思是说,model.fit 会返回一个历史回调。由于 model.fit 恰好在 main 函数中,所以我无法在不调用 main 函数的情况下调用 History。
-
只是保存这个历史对象?从函数中返回它
标签: python function tensorflow keras