# pytorch_learning **Repository Path**: hou-chenfeng/pytorch_learning ## Basic Information - **Project Name**: pytorch_learning - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-02 - **Last Updated**: 2024-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pytorch_learning ## 从头开始pytorch 1 dataset show - MNIST 类 - dataset next 或者 enumerate - torch转numpy,torch形状NCHW - numpy转Image类,用PIL.Image 可视化与保存 - with open f.write f.readlines 2 dataset类 与 dataloader - dataset类 init getitem len - zip 路径推导式 - transform Compose ToTensor - numpy 转 tensor - dataloader类 batchsize shuffle 3 model module类 和模型尺寸 - module类 super.\__init\__() forward - nn.Sequential view self.modules() - Conv2d ReLU MaxPool2d 尺寸公式 4 train - 写pred试试模型对不对 - criterion loss optimizer - 训练的基础四步, 清除梯度,计算结果和损失,反向传播,更新梯度。 - to(device) - optimizer.zero_grad() - output - loss=criterion() - loss.backward() - optimizer.step() - 输出文件夹时间刻 timestamp=datetime.now().strftime("%Y%m%d-%H%M%S") - 保存权重加载权重 - torch.save(model.state_dict(),model_path) - model.load_state_dict(torch.load(model_path,map_location=device)) - 日志tensorboard SummaryWrite add_scalar writer.close() 5 pred 推理时的设置 - with torch.no_grad(): - model.eval() ## resnet ![resnet结构](imgs/resnet.jpg ) ![残差块](imgs/residual.jpg ) ![残差块](imgs/residual2.jpg ) 复习一下网络结构写的过程, 残差是为了解决网络加深的退化问题,BN是为了解决梯度消失和梯度爆炸 ## VGG ![VGG](imgs/vgg.jpg ) 比较简单的网络 方便书写 ## VIT ### attention - 自注意力 self attention 多头自注意力 Muti-head Self Attention QKV 的含义, 以及使用卷积的实现 ### VIT ![VIT](imgs/vit1.jpg ) ![VIT2](imgs/vit2.jpg ) - position embedding - transformer encoder ### swim transformer - 窗口注意力机制W-MSA 偏移窗口注意力机制SW-MSA - Relative position bias