标签: early-stopping

PyTorch 中的早期停止

我尝试实现提前停止功能以避免我的神经网络模型过度拟合。我很确定逻辑是正确的,但由于某种原因,它不起作用。我希望当验证损失大于某些时期的训练损失时,早期停止函数返回 True。但它始终返回 False,即使验证损失变得比训练损失大得多。请问您能看出问题出在哪里吗?

早停功能

def early_stopping(train_loss, validation_loss, min_delta, tolerance):

    counter = 0
    if (validation_loss - train_loss) > min_delta:
        counter +=1
        if counter >= tolerance:
          return True
Run Code Online (Sandbox Code Playgroud)

在训练期间调用该函数

for i in range(epochs):
    
    print(f"Epoch {i+1}")
    epoch_train_loss, pred = train_one_epoch(model, train_dataloader, loss_func, optimiser, device)
    train_loss.append(epoch_train_loss)

    # validation 

    with torch.no_grad(): 
       epoch_validate_loss = validate_one_epoch(model, validate_dataloader, loss_func, device)
       validation_loss.append(epoch_validate_loss)
    
    # early stopping
    if early_stopping(epoch_train_loss, epoch_validate_loss, min_delta=10, tolerance = 20):
      print("We are at epoch:", i)
      break
Run Code Online (Sandbox Code Playgroud)

编辑:训练和验证损失: 在此输入图像描述 在此输入图像描述

编辑2:

def train_validate (model, train_dataloader, validate_dataloader, loss_func, optimiser, device, epochs): …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning pytorch early-stopping

29
推荐指数
2
解决办法
5万
查看次数

当 RMSLE 为评估指标时,早期停止 lightgbm 不起作用

我正在尝试使用rmsle作为评估指标在 Python 中训练 lightgbm ML 模型,但当我尝试包含提前停止时遇到问题。

这是我的代码:

import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split

df_train = pd.read_csv('train_data.csv')
X_train = df_train.drop('target', axis=1)
y_train = np.log(df_train['target'])

sample_params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'random_state': 42,
    'metric': 'rmsle',
    'lambda_l1': 5,
    'lambda_l2': 5,
    'num_leaves': 5,
    'bagging_freq': 5,
    'max_depth': 5,
    'max_bin': 5,
    'min_child_samples': 5,
    'feature_fraction': 0.5,
    'bagging_fraction': 0.5,
    'learning_rate': 0.1,
}

X_train_tr, X_train_val, y_train_tr, y_train_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

def train_lightgbm(X_train_tr, y_train_tr, X_train_val, y_train_val, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning non-linear-regression lightgbm early-stopping

2
推荐指数
1
解决办法
3558
查看次数

C++ 程序在用户输入后停止

#include "util.h"
#include <cmath>

double celsius(double t)
{
    double C = (t-32) * 5/9;
    C = round(C);
    return C;
}

double fahrenheit(double t)
{
    double F = t * 9/5 + 32;
    F = round(F);
    return F;
}

double round(double num)
{
    double rounded = round(num);
    return rounded;
}

int main()
{
    double temp = readDouble("Please enter a temperature: ");
    string type = readLine("Enter C to convert to Celsius or F to convert to Fahrenheit: ");
    if(type == "C")
    { …
Run Code Online (Sandbox Code Playgroud)

c++ user-input early-stopping

1
推荐指数
1
解决办法
74
查看次数