pytorch + 深度学习

李明贤
2023-12-01

PyTorch深度学习实践

  • 读文档能力
  • 理解架构能力

线性模型

训练集、开发集(模型评估)、测试集。
f ( x ) = w x + b f(x)=wx+b f(x)=wx+b
loss —— 一个样本
cost (Mean Square Error) —— training set

梯度下降算法

局部最优,不一定全局最优。
鞍点:梯度为0,但无法继续迭代。
w = w − α ∂ c o s t ∂ w w = w - \alpha\frac{\partial cost}{\partial w} w=wαwcost
SGD: w = w − α ∂ l o s s ∂ w w = w - \alpha\frac{\partial loss}{\partial w} w=wαwloss
Mini-Batch:介于cost和loss之间。

反向传播

Tensor:data 和 grad
w.data
w.grad.data:数值计算,不构建计算图。
w.grad.item():取出数值。
w.grad.data.zero():清零。

pytorch线性回归

torch.nn.Linear(1,1) 包括 weight 和 bias。
y = w T x + b y=w^Tx+b y=wTx+b
net.parameters()
print(list(net.parameters()))
print(list(net.named_parameters()))
print(net.layer.weight.item())
print(net.layer.bias)

  1. dataset
  2. design model using nn.Module
  3. construct loss and optimizer
  4. training cycle: forward, backward, update

Logistic 回归(二分类)

输出不再是估计值,而是概率。
非线性的激活函数(sigmoid)。

多维特征的输入

Mini-Batch:N个samples向量化计算。
多层:加入非线性函数。

加载数据集

torch.utils.data.Dataset()
torch.utils.data.DataLoader(XX, batch_size, shuffle, num_workers)

多分类问题

softmax:多个输出的概率分布。
最后一层softmax,其他层非线性。
nn.CrossEntropyLoss()

卷积神经网络

feature extration: convolution、subsampling
classification: fully connected
convolution: 图像RGB三个通道,每个通道配一个卷积核,然后相加,变为一个通道。patch: 3 * width * height。
n通道,m个filter(n个卷积核),相加,拼接,变为m个通道。
MaxPooling: 挑选最大值,通道数不变。
input—(conv—relu—pooling)—linear—output
1*1Conv降低运算量。

循环神经网络

有序列关系的数据。
h t = t a n h ( W i h x t + b i h + W h h h t − 1 + b i h ) h_t=tanh(W_{ih}x_t+b_{ih}+W_{hh}h_{t-1}+b_{ih}) ht=tanh(Wihxt+bih+Whhht1+bih)
torch.nn.RNNCell()
torch.nn.RNN()
One-hot vs Embedding
x—embed—RNN Cell—Linear—o
LSTM
GRU

 类似资料: