随笔分类 - 深度学习
摘要:Pytorch做训练的时候,可以调整训练学习率。 通过调整合适的学习率曲线可以提高模型训练效率和优化模型性能。 各种学习率曲线示例代码如下: import torch import torch.optim as optim import torch.nn as nn import matplotli
        阅读全文
                
摘要:这里用了gensim和jiba分词库,jensim原生是支持英文的,如果想使用中文word2vec,还需要自己训练一下。 中文语料库可以在这里下载:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.b
        阅读全文
                
摘要:如果一个机器上有多个gpu,可以使用多gpu训练。 一般数据量和模型比较大的时候训练速度会有明显的提升,模型和数据比较小的时候反而可能因为数据通信原因导致性能下降。 下面是一个简单的例子: import time import torch import torchvision.models from
        阅读全文
                
摘要:混合精度训练通常会结合使用单精度浮点数(float32)和半精度浮点数(float16),以提高训练效率和减少内存占用。 代码中关键在于两个地方: 1. 在with autocast():下,模型的前向传播和损失计算放在自动混合精度加速环境中进行。 2. 使用scaler对象进行混合精度训练的管理。
        阅读全文
                
摘要:编译有些python库时可能会报这个错。 解决方法是: 将setup.py中的“cmdclass={'build_ext': BuildExtension}”改为“cmdclass={'build_ext': BuildExtension.with_options(use_ninja=False)}
        阅读全文
                
摘要:一般出现这种问题都是cuda、pytorch或vs版本没配对上。 这里出现问题的文件为torch中的cast.h。 我看网上很多给的解决方法是修改下面代码: template <template <typename...> class Tuple, typename... Ts> class tup
        阅读全文
                
摘要:之前做非线性优化一般都是求雅可比矩阵或者数值求导,然后通过高斯牛顿或者LM迭代求解。 这次用pytorch中的方法求解试试。 下面给一个用pytorch求解的代码,例子是之前文章中的。 import torch import torch.nn as nn import torch.optim as 
        阅读全文
                
摘要:统计模型参数量,方便判断不同模型大小: import torch import torch.nn as nn class AlexNet(nn.Module): def __init__(self): super(AlexNet, self).__init__() self.conv1 = nn.C
        阅读全文
                
摘要:测试模型用之前文章训练的Alexnet模型。 首先将pth文件转为onnx文件: import torch import torch.nn as nn # 自定义AlexNet模型 class AlexNet(nn.Module): def __init__(self): super(AlexNet
        阅读全文
                
摘要:cudnn为网络每一卷积层选最优实现方法,加速网络训练。 设置如下: torch.backends.cudnn.benchmark = True 加速条件如下: 1. 输入数据在训练过程中一般不变化。 2. 数据量较大,并可以同时加载到GPU内存中。 3. 训练次数比较多。
        阅读全文
                
摘要:安装完pytorch、cuda和cudnn之后,可以先判断是否可用。 import torch print('CUDA版本:',torch.version.cuda) print('Pytorch版本:',torch.__version__) print('显卡是否可用:','可用' if(torc
        阅读全文
                
摘要:整体网络结构如下: 最关键的改进是使用了一个叫深度可分离卷积的结构,将原始的3*3卷积升通道的操作分解成了两部分: 第一部分是保持通道不变的情况下做3*3卷积。 第二部分是使用1*1的卷积做通道提升操作。 结果就是能够减少很多的运算量。 下面依然是一个猫狗大战的训练程序,并且增加了断点续练的部分处理
        阅读全文
                
摘要:ResNet也是相当经典的卷积神经网络,这里实现了18,34,50,101和152。 网络结构如下: 这里18和34用到的block是一样的,两层卷积。50,101和152用到的block是一样的,三层卷积,不过用到了1*1卷积来调整数据通道数。 猫狗大战的训练代码如下: import torch 
        阅读全文
                
摘要:VGGNet也是一个比较经典的深度学习网络模型。 模型结构如下: 这里选用了D模型,同样用该模型做个了个猫狗大战的训练,不过为了提高速度,我把图像resize为112*112了,相应的flatten之后就成56*3*3了,所以和原始模型有点不一样。 import torch import torch
        阅读全文
                
摘要:AlexNet是另外一个比较经典的深度学习网络模型。 模型结构如下: 这里用该模型做个了个猫狗大战的训练,测试与c++测试和上一篇类似。 import torch import torch.nn as nn import torch.optim as optim from torch.utils.d
        阅读全文
                
摘要:业余时间重新学习一下深度学习,先从基础网络开始,一点一点积累。 Lenet网络模型: 下面程序中输入的数据是28*28的,结构和原始稍微有点不一样。 训练代码: import torch import torch.nn as nn import torch.optim as optim from t
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号