如果损失仍然很高,如何在x个时期后重新启动model.fit?

有时候我很难适应我的数据,而当我重新启动fit(使用shuffle = true)时,有时候我会很适合。

看到我之前的问题:

https://datascience.stackexchange.com/questions/62516/why-does-my-model-sometimes-not-learn-well-from-same-data

作为解决方法,如果在x个时期后损失很大,我想自动重新开始拟合过程。我该如何实现?

我假设我需要使用EarlyStopping回调的自定义版本?由于发现损失较小( 0.5从而需要重新开始训练,我该如何区分ES?

这是一个简化的结构:

def train_till_good():
    while not_finished:
         train()

def train():
    load_data()
    model = VerySimpleNet2(); 

    checkpoint = keras.callbacks.ModelCheckpoint(filepath=images_root + dataset_name + '\\CheckPoint.hdf5')

    myopt = keras.optimizers.Adam(lr=0.001,decay=0.01)

    model.compile(optimizer=myopt,loss='categorical_crossentropy',metrics=['accuracy'])

   LRS = cyclicLR(base_lr=0.000005,max_lr=0.0003,step_size=200.)

    tensorboard = keras.callbacks.TensorBoard(log_dir='C:\\Tensorflow',histogram_freq=0,write_graph=True,write_images=False)

    ES = keras.callbacks.EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=5)

    model.fit(train_images,train_labels,shuffle=True,epochs=num_epochs,callbacks=[checkpoint,tensorboard,ES,LRS],validation_data = (test_images,test_labels)
              )


def VerySimpleNet2():
    model = keras.Sequential([
        keras.layers.Dense(112,activation=tf.nn.relu,input_shape=(224,224,3)),keras.layers.Dropout(0.4),keras.layers.flatten(),keras.layers.Dense(3,activation=tf.nn.softmax)
    ])
    return model
qq44461443 回答:如果损失仍然很高,如何在x个时期后重新启动model.fit?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160680.html

大家都在问