pytorch 学习记录

2023.10.31

  • model.train():启用 Batch Normalization 和 Dropout。作用:对BN层,保证BN层能够用到每一批数据的均值和方差,并进行计算更新;对于Dropout,model.train()是随机取一部分网络连接来训练更新参数。
  • model.eval():不启用 Batch Normalization 和 Dropout
  • with torch.no_grad():with语句块内停止autograd模块的工作,不计算梯度/不更新梯度,加速和节省显存
  • 参考链接:【PyTorch】搞定网络训练中的model.train()和model.eval()模式 - 知乎 (zhihu.com)

2023.11.2

  • tqdm(可迭代对象) = 会显示进度条的可迭代对象
  • trange() = tqdm(range())

2023.11.6

  • (2-layer nn.LSTM + fc layer) model.state_dict() (值似乎就等于model.parameters()中的值)
    • embedding.weight:  size = len(vocab) * embedding_dim = (10000+1)*128
      start: -4.54~0~4.86
      1 batch: 
    • lstm.weight_ih_l0: size = 512 * 128
      3 batches: -0.0912~0.0002~0.0913
      5 batches: -0.0922~0.0002~0.0923
      10 batches: -0.0983~0.0003~0.0984
      5 batches: -0.0922~0.0002~0.0923
    • lstm.weight_hh_l0: size = 512 * 128
    • lstm.bias_ih_l0: 512
    • lstm.bias_hh_l0: 512
    • lstm.weight_ih_l1: size = 512 * 128
    • lstm.weight_hh_l1: size = 512 * 128
    • lstm.bias_ih_l1: 512
    • lstm.bias_hh_l1: 512
    • fc.weight: size = 1 * 128
    • fc.bias: size = 1
  • hidden: size = 2(h0, c0) * LSTM-layerNum * batch_size * hidden_dim
  • epochs:
    • train: 各层参数在反向传播后改变
    • validate: 在model.eval()之后,参数固定
  • 验证集上的预测值分布非常集中,不知道是否是epoch数量太小/没有对预测值做反归一化?
  • loss曲线完全没有后期上升趋势

2023.11.8

  • CUDA error: pytorch和显卡支持的cuda不兼容,一般需要升级pytorch
    在python里用torch.cuda.current_device()查看报错提示和帮助

2023.11.16

  • transformers.BertTokenizer参数:参考huggingface.co/docs/Bert/...
    注意BertTokenizer的父类参数(部分如下)
    Tokenizer (huggingface.co)

     

oth

 

posted on 2023-10-31 11:48  Mju_halcyon  阅读(12)  评论(0编辑  收藏  举报

导航