Assing time作为Keras序贯神经网络的学习终止准则

Assing time as the learning termination criteria of Keras sequential Neural Network

提问人:babak asadolah 提问时间:9/20/2023 更新时间:9/20/2023 访问量:11

问:

我开发了一个 NN 模型,如下所示,它有两个隐藏层和 19 个节点。初始激活是“tanh”。

如您所见,我有 2 个初始回调条件。第一个 (es) 基于 EarlyStoping,如果精度在 10 个连续的连续纪元中没有变化,第二个 (time_callback) 计算每个纪元中过去的时间。

运行这个模型后,我有了过去的总时间,直到我们到达最后一个纪元(称之为“t”)。

现在的问题是,我必须再次运行模型,但这次使用例如“relu”作为激活。但是,我必须删除“es”和其他回调条件,而是将计算出的时间“t”设置为停止条件。 在另一个世界里,第二个具有“relu”功能的模型应该只继续学习,直到时间“t”,然后停止!

有谁知道我该如何设置?!

class TimeHistory(keras.callbacks.Callback):
    def on_train_begin(self, logs={}):
        self.times = []

    def on_epoch_begin(self, batch, logs={}):
        self.epoch_time_start = time.time()

    def on_epoch_end(self, batch, logs={}):
        self.times.append(time.time() - self.epoch_time_start)
        

model = Sequential()
model.add(Dense(19, input_shape=[X_train.shape[1]], activation='tanh', name="layer1"))
model.add(Dense(19, activation='tanh', name="layer2"))
model.add(Dense(1, activation='sigmoid', name="Output"))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

time_callback = TimeHistory()

es = EarlyStopping(monitor='val_accuracy', mode='max', verbose=1, patience=10)

# fit network
history = model.fit(X_train, y_train,
                    validation_split=0.3,
                    epochs=1000,
                    batch_size=10,
                    shuffle=False,
                    verbose=1,
                    callbacks=[es,time_callback])

times = time_callback.times

#Then we move to second model with 'relu' function
model2 = Sequential()
model2.add(Dense(19, input_shape=[X_train.shape[1]], activation='relu', name="layer1"))
model2.add(Dense(19, activation='relu', name="layer2"))
model2.add(Dense(1, activation='sigmoid', name="Output"))
model2.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history2 = model2.fit(X_train, y_train,
                     validation_split=0.3,
                     epochs=100,
                     batch_size=10,
                     shuffle=False,
                     verbose=1,
                     callbacks=????????????????)
python tensorflow keras 回调 提前停止

评论


答: 暂无答案