Day52

知识点回顾:

  1. 随机种子
  2. 内参的初始化
  3. 神经网络调参指南
    1. 参数的分类
    2. 调参的顺序
    3. 各部分参数的调整心得

作业:对于day'41的简单cnn,看看是否可以借助调参指南进一步提高精度。

对于day41的CNN进行调参:

早停类:

# 早停类
class EarlyStopping:
    """如果验证损失在给定轮数内没有改善,则提前停止训练"""
    def __init__(self, patience=7, verbose=False, delta=0):
        """
        参数:
            patience (int): 在最后一次验证损失改善后等待的轮数
                            默认: 7
            verbose (bool): 如果为True,每次验证损失改善时打印消息
                            默认: False
            delta (float): 监控指标的最小变化,以视为改善
                            默认: 0
        """
        self.patience = patience
        self.verbose = verbose
        self.counter = 0 # 记录验证损失未改善的连续轮数
        self.best_score = None  # 记录历史最佳分数(通常是负的验证损失,因为我们希望最大化这个值)
        self.early_stop = False  # 触发早停的标志
        self.val_loss_min = np.Inf  # 记录历史最低验证损失
        self.delta = delta  # 改善阈值
 
    def __call__(self, val_loss, model):
        score = val_loss
 
        if self.best_score is None:
            self.best_score = score
            self.save_checkpoint(val_loss, model)
        elif score < self.best_score + self.delta:
            self.counter += 1
            print(f'早停计数器: {self.counter} / {self.patience}')
            if self.counter >= self.patience:
                self.early_stop = True
        else:
            self.best_score = score
            self.save_checkpoint(val_loss, model)
            self.counter = 0
 
    def save_checkpoint(self, val_loss, model):
        '''当验证损失降低时保存模型'''
        if self.verbose:
            print(f'测试集损失降低 ({self.val_loss_min:.6f} --> {val_loss:.6f})')
        # torch.save(model.state_dict(), 'checkpoint.pth')
        self.val_loss_min = val_loss

@浙大疏锦行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值