python-pytorch 常用api打卡0.1.100
torch.nn
torch.nn.Flatten
- 维度计数是从0开始
- m = nn.Flatten()默认从1维开始合并
- 合并的维度值,就是这些维度的乘积
- 对于数据维度的理解
如下数据input
4.1 对于数据-1.1995e+00来说需要input[0][0][0][0],而[0]的个数就是这个数据的“维度”
4.2 对于数据[-1.1995e+00, 1.6391e+00, -1.2680e+00, 2.5306e-02, 1.8864e-01]来说需要input[0][0][0],是“三维”
tensor([[[[-1.1995e+00, 1.6391e+00, -1.2680e+00, 2.5306e-02, 1.8864e-01],
[ 6.5537e-01, -3.0261e-01, 6.1051e-01, -3.5670e-01, -3.0462e-01],
[-2.4055e+00, 9.0808e-01, 6.8750e-01, -4.9038e-01, 5.9194e-01],
[ 2.4578e+00, 1.5924e+00, 6.7753e-01, 8.1588e-01, 4.2632e-01],
[ 4.9011e-01, -4.9083e-01, 1.3152e+00, -8.3352e-01, 1.0400e-01]]],
[[[ 3.0514e-01, -9.6460e-01, 3.7641e-02, -1.8372e-02, -1.7491e+00],
[-1.5873e-01, -1.1810e+00, 1.9811e+00, 4.6428e-01, -5.8273e-01],
[-2.6358e-01, -8.0828e-01, -1.9920e+00, -6.6097e-01, -4.1544e-01],
[-1.4223e+00, -9.7968e-01, 1.0762e+00, 5.4633e-01, -1.1961e+00],
[ 2.8003e-01, -2.4002e-01, -4.5771e-01, -1.7926e+00, -2.4925e-02]]],
torch.nn.Linear
- 参数是输入和输出都是特征数,可以简单理解成特性就是列
- 模型输入的参数要求,只要满足要求的特征数(列)即可,不管数据有多少行
- 由于是xw+b=y,再根据矩阵乘法的要求:被乘数的列一定要和乘数的行相等,即axb,a的列要等于b的行
- 创建线性层时会自动创建权重矩阵和偏置向量,并将它们保存在模型的参数列表中
torch.nn.ReLU
- max(0,x),大于0取值本身,小于0取值0
- 最重要的意义是:非线性性,使得神经网络能够拟合非线性函数,从而增强模型的表示能力;其他意义还有如稀疏性、计算效率、缓解梯度消失问题等