任务一:基于机器学习的文本分类

  1. 深度学习项目,在训练之前,一般均会对数据集做shuffle,打乱数据之间的顺序,让数据随机化,这样可以避免过拟合。
  2. Batch:批处理,顾名思义就是对某对象进行批量的处理。训练神经网络时,在数据集很大的情况下,不能一次性载入全部的数据进行训练,电脑会支撑不住,其次全样本训练对于非凸损失函数会出现局部最优,所以要将大的数据集分割进行分批处理。batch_size就是每批处理的样本的个数。
  3. 过大的batch_size会降低梯度下降的随机性,以至于更稳定,训练更容易收敛,但因此更容易陷入局部最优点。较小的批次内存利用率极低,还会带来幅度和随机性较大的权重更新,比较容易震荡导致不稳定,但也因此能够跳出局部最小。
  4. 梯度下降法是最常见的优化算法,在最小化损失函数时,通过梯度下降法一步步的迭代求解,得到最小化的损失函数和模型参数值。
  5. CountVectorizer: 只考虑词汇在文本中出现的频率。
  6. DataLoader本质上就是一个iterable(跟python的内置类型list等一样),并利用多进程来加速batch data的处理,使用yield来使用有限的内存。DataLoader是一个高效,简洁,直观的网络输入数据结构,便于使用和扩展。
  7. optimizer.step()通常用在每个mini-batch之中,只有用了optimizer.step(),模型才会更新。
  8. optimizer.zero_grad()把梯度置零,也就是把loss关于weight的导数变成0,如果不清零,那么使用的这个grad就得同上一个mini-batch有关。
  9. torch.max():返回一个tensor中的最大值,Tensor.view():把tensor 进行reshape的操作.第一个参数1将第一个维度的大小设定成1,后一个-1就是说第二个维度的大小=元素总数目/第一个维度的大小。