处理多维特征的输入
常见数据格式
- 每一行是一条记录(Record)
- 每一列是一个特征/字段(Feature)
Logistic Regression Model
首先演示在数据有多维特征时采用Logistic Regression Model的公式形式:
$\hat{y}^{(i)}=\sigma(\sum_{n=1}^8x_n^{(i)}\cdot\omega_n+b)$下图是上面公式的矩阵图示,其中$\sigma$为sigmoid函数:
对于右下角的矩阵等式,$N\times8$的那个矩阵可以理解为每一行一个record,每一列一个feature,$N\times1$的b矩阵是b广播而来的
8维特征,一层线性模型:
1 | class Model(torch.nn.Module): |
其中self.linear=torch.nn.Linear(8,1)
是输出为一维线性模型。输出改成其它维度,如改为self.linear=torch.nn.Linear(8,6)
,模型可视化如下:
多个不同维度的线性层(以激活函数结束)串联在一起,得到一个简单的神经网络:
层越多参数越多,学习能力越强,但学习能力不是越强越好,太强的话会把噪声都学进去了,没有泛化能力
上面的神经网络图示:
示例:Diabetes Prediction
四个步骤:
- Prepare dataset
- Design model using Class
- Inherit from nn.Module
- Construct loss and optimizer
- Training cycle
- forward, backward, update
Prepare dataset
1 | # 数据集链接: https://pan.baidu.com/s/1Ku5c99yDHNFMt8EJAcF5LA 提取码: n4xh |
Design model using Class
1 | class Model(torch.nn.Module): |
Construct loss and optimizer
由于是二分类问题,采用了交叉熵作为loss函数,optimizer与之前课程中的选择一致
1 | criterion = torch.nn.BCELoss(size_average=True) |
Training Cycle
1 | for epoch in range(100): |
附:神经网络中经常用到的激活函数
ReLU在神经网络里面用的比较多,但ReLU不连续
课程来源:《PyTorch深度学习实践》完结合集