超参数使用小结

 

总结笔记内容主要源自B站UP:主阿力阿哩哩__https://space.bilibili.com/299585150


class Net(torch.nn.Module):     # 自定义“层”
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()    # 国际惯例
        ...

    def forward(self, x):
        pass
optimizer = torch.optim.XXX(net.parameters(), lr)    # 优化器
loss_func = torch.nn.XXX()                           # 损失函数
   optimizer.zero_grad()   # 参数梯度清零,避免梯度累加
   loss.backward()         # loss反向传播,计算梯度值
   optimizer.step()        # 优化参数

 

torch.nn.Sequential(...)    # 根据顺序的神经网络层
loader = Data.DataLoader(
    dataset,        # 将数据传入
    batch_size,     # 一次多少个数据
    shuffle,        # 是否在训练时随机打乱数据再抽样
    num_workers,    # 经典多线程
)
train_data = torchvision.datasets.MNIST(
    root,        # 保存的地址
    train,       # True 为 train data, 有6w个数据点
                 # False 为 test data, 有1w多个数据点(比较少)
    transform=torchvision.transforms.ToTensor(),    # 把下载数据的类型(numpy_array)转成 Tensor 格式
                                                    # 黑白图片,数据的值从(0, 255)压缩为(0, 1)

    download     # 是否下载
)

 

一、激活函数

  • Linear:线性激活函数,对输入直接输出。通常用在回归模型的输出层中

  • ReLU:常用于多层神经网络的中间层

  • sigmoid、tanh:sigmoid将神经元的输出值压缩到(0, 1),tanh压缩到(-1, 1),由于输出值非常小,连乘会出现梯度消失的现象,在层数较少的神经网络模型中,或者放在回归模型输出层中用作回归的激励函数、分类模型输出层中用作计算概率的激励函数

  • softmax:通常用在分类模型的输出层中,每个节点输出一个概率,所有节点的概率加和等于1

二、优化器(Optimizer)

  • SGD(Stochastic Gradient Decent):随机梯度下降法

  • Momentum:比SDG多了Momentum动量

  • RMSprop:使用的是指数加权平均

  • Adam(Adaptive Moment Estimation):RMSprop + Momentum,不知道用啥就用Adam,用过都说好!

三、损失函数Loss

  • 回归任务:mse

  • 二分类任务:binary_crossentropy

  • 多分类任务:categorical_crossentropy

四、学习率(Learning Rate)

  • 大的学习率:可能会在学习过程中跳过全局极值点

  • 小的学习率:对于非凸函数,它可能存在许多局部最小值,很可能让整个网络收敛于局部最小值而不是全局最小值,从而得不到最优解

 

 

 

 


 

你可能感兴趣的:(超参数使用小结)