这两天主要学习的内容如下:
Task01:线性回归;Softmax与分类模型;多层感知机(1天)
Task02:文本预处理;语言模型;循环神经网络基础(1天)
对于Task01而言,由于之前有应用Keras和TensorFlow实现类似模型的基础,因此更多的是想学习PyTorch的语法规则,即如下的片段:
num_epochs = 3
for epoch in range(1, num_epochs + 1):
for X, y in data_iter:
output = net(X)
l = loss(output, y.view(-1, 1))
optimizer.zero_grad() # reset gradient, equal to net.zero_grad()
l.backward()
optimizer.step()
print('epoch %d, loss: %f' % (epoch, l.item()))
对于一些重要的步骤,例如optimizer.zero_grad()
,如果之前没有学习过相应的内容,遗漏之后会导致神经网络并没有沿着我们想要的方向训练。
在这一部分也留下了一些之后要学习的内容,例如
- 在哪一步实现data augmentation
- 如何实现early stopping
- 如何优雅地画出training和testing loss,来更好地观察训练的过程
对于Task02而言,分词部分不难理解,之前也接触过一些中文分词的工具,例如jieba等;关于RNN的部分,确实通过PyTorch中的学习又加深了对它的理解。以前尝试过使用RNN进行时间序列预测,当时是使用Keras、TensorFlow实现,之后可以尝试用PyTorch再实现一遍。
在这一部分留下的疑点,例如:
- 如何实现LSTM
- 如何实现GRU
如果可以的话,找一个具体的时间预测问题,之后用PyTorch完整比较一下标准的RNN、GRU和LSTM。