3.11 模型选择、欠拟合和过拟合
训练误差和泛化误差
训练误差(training error)指模型在训练数据集上表现出的误差,泛化误差(generalization error)指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。
训练误差(training error)指模型在训练数据集上表现出的误差,泛化误差(generalization error)指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。
导入需要的库
1 | from torch import nn |
导入需要的库
1 | import torch |
多层感知机在单层神经网络的基础上引入了一到多个隐藏层(hidden layer)。隐藏层位于输入层和输出层之间。
具体来说,给定一个小批量样本\(\boldsymbol{X} \in \mathbb{R}^{n \times d}\),其批量大小为\(n\),输入个数为\(d\)。假设多层感知机只有一个隐藏层,其中隐藏单元个数为\(h\)。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为\(\boldsymbol{H}\),有\(\boldsymbol{H} \in \mathbb{R}^{n \times h}\)。因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数分别为\(\boldsymbol{W}_h \in \mathbb{R}^{d \times h}\)和 \(\boldsymbol{b}_h \in \mathbb{R}^{1 \times h}\),输出层的权重和偏差参数分别为\(\boldsymbol{W}_o \in \mathbb{R}^{h \times q}\)和\(\boldsymbol{b}_o \in \mathbb{R}^{1 \times q}\)。
导入需要的库
1 | import torch |
导入本节实现所需的包或模块
1 | import numpy as np |
通过torchvision的torchvision.datasets
来下载这个数据集。第一次调用时会自动从网上获取数据。通过参数train
来指定获取训练数据集或测试数据集。参数transform = transforms.ToTensor()
使所有数据转换为Tensor
,如果不进行转换则返回的是PIL图片。transforms.ToTensor()
将尺寸为 (H x W x C) 且数据位于[0, 255]的PIL图片或者数据类型为np.uint8
的NumPy数组转换为尺寸为(C x H x W)且数据类型为torch.float32
且位于[0.0, 1.0]的Tensor
。
线性回归模型适用于输出为连续值的情景。softmax回归适用于离散值的预测问题。
通常使用离散的数值来表示类别,例如\(y_1=1, y_2=2, y_3=3\)。与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。
项目地址:https://github.com/fatedier/frp
从此处下载对应系统的frpc:https://github.com/fatedier/frp/releases
官方文档:https://gofrp.org/zh-cn/docs/overview/
使用命令行,执行:
题目链接:https://codeforces.com/contest/2037
通过不断询问\(k_i=f(1,i),i=1,2,...,n\),如果ki>ki-1,则表示改位置为1,会产生新的满足条件的子串;如果\(k_i=k_{i-1}\),则表示当前位置是0,不会产生新的满足条件的子串。在字符串最开始的位置如果为1的话,也不会产生新的子串,所以通过找到第一个不为零的\(k_i\),其值为多少就表示在这个1前有多少个0,再结合其位置\(i\)就可以知道在最前面有多少个1了。