提问人:babak asadolah 提问时间:9/20/2023 更新时间:9/20/2023 访问量:11
Assing time作为Keras序贯神经网络的学习终止准则
Assing time as the learning termination criteria of Keras sequential Neural Network
问:
我开发了一个 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=????????????????)
答: 暂无答案
评论