Datawhale AI夏令营 baseline精读

更新参数(在多轮训练中会不断更新参数)

前向传播:计算输入数据的预测输出。使用当前的模型参数,将输入数据通过模型进行推理,得到预测值。

计算损失:使用损失函数(如均方误差 MSE、交叉熵损失等)计算预测值与实际目标值之间的误差。损失函数用于评估模型预测的准确性。

反向传播:通过反向传播算法(Backpropagation)计算损失函数相对于模型参数的梯度。反向传播使用链式法则来计算每个参数的梯度,这些梯度表示了损失函数如何随着每个参数的变化而变化。

更新参数:使用优化算法(如梯度下降、Adam、RMSprop等)根据计算出的梯度更新模型参数。优化算法会根据梯度和学习率(learning rate)来调整参数,使得损失函数的值逐步减少。
  前向传播:
    
    outputs = model(inputs)
    loss = criterion(outputs, targets)
    在这一步中,输入数据 inputs 被传入模型 model,得到预测结果 outputs,然后计算预测结果与实际目标 targets 之间的损失。
    
  反向传播:
    
    optimizer.zero_grad()
    loss.backward()
    optimizer.zero_grad() 
    用于清除之前计算的梯度,因为 PyTorch 默认会将梯度累加。loss.backward() 计算当前损失函数相对于模型参数的梯度。
    
  更新参数:
    
    optimizer.step()
    optimizer.step() 
    使用计算出的梯度来更新模型参数。

优化器的作用

优化器是用于更新和调整神经网络模型参数的算法。优化器通过计算损失函数的梯度,指导模型参数朝着最小化损失函数的方向调整。优化器在训练过程中不断调整参数,使模型能够更好地拟合数据。

Adam(Adaptive Moment Estimation)
Adam 结合了动量优化和 RMSProp 的优点,自适应地调整每个参数的学习率。
适用于大多数深度学习任务,尤其是处理稀疏数据和非平稳目标。

选择优化器的建议

  • SGD with Momentum:对于大多数传统任务,SGD 加动量是一个强大的基线选择。
  • Adam:如果你刚开始尝试一个新任务,Adam 是一个很好的默认选择,因为它适用于各种任务并且往往表现良好。
  • RMSProp:如果你的数据具有非平稳性,例如在强化学习或时间序列任务中,RMSProp 是一个不错的选择。
  • AdaGrad:适用于稀疏数据或特征的任务,如自然语言处理。
  • AdamW:如果你需要强正则化效果以防止过拟合,AdamW 是一个值得考虑的选择。

特征工程

包括特征选择、特征创建和特征处理等方面

特征选择

  去除低方差特征   
  递归特征消除(RFE)
  嵌入式方法:使用带有特征选择功能的算法(如Lasso、Ridge、决策树)进行特征   选择。

特征创建

特征处理

缺失值处理:
     删除包含缺失值的样本或特征。
     使用均值、中位数、众数等方法填补缺失值。

数值特征标准化和归一化:
     标准化(Standardization):将特征缩放到均值为0,标准差为1的分布。
     归一化(Normalization):将特征缩放到[0,1]或[-1,1]区间。


标签编码(Label Encoding):将类别特征转换为整数。
独热编码(One-Hot Encoding):将类别特征转换为稀疏矩阵,每个类别一个独立的二进制特征。
目标编码(Target Encoding):用目标变量的统计量(如均值)来编码类别特征。
特征降维

热编码(ONE_HOT)

 one-hot 编码是一种将类别标签转换为二进制向量的过程,每个类别由一个独特的二进制向量表示。在这个向量中,只有一个位置为1,其他位置为0。
Y_train = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
使用 to_categorical 函数进行 one-hot 编码后,结果如下
Y_train_one_hot = to_categorical(Y_train, num_classes=10)

[
 [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 类别 0
 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],  # 类别 1
 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],  # 类别 2
 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],  # 类别 3
 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],  # 类别 4
 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0],  # 类别 5
 [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],  # 类别 6
 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],  # 类别 7
 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],  # 类别 8
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]   # 类别 9
]
num_classes 参数指定了总的类别数,即标签的类别数。这个参数确保生成的 one-hot 编码矩阵的列数与类别数一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值