深度学习框架
文章平均质量分 85
深度学习框架相关
TracelessLe
BetterLife,BetterWorld.
展开
-
使用Huggingface镜像站hf-mirror.com下载资源
hf-mirror.com是Huggingface的镜像网站,为用户提供了一个备用的访问通道,解决了无法访问huggingface.co的问题。通过hf-mirror.com,我们可以正常地下载所需的模型和数据集,享受Huggingface提供的强大功能。原创 2024-01-31 18:45:00 · 12259 阅读 · 3 评论 -
TensorRT 从7.2升级到8.5,改写plugin以适配新版本
TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。TensorRT的版本迭代速度非常快,很多之前写的plugin在版本升级后可能就没法直接使用,这时就需要将代码升级,以适配新版TRT。本文仅记录TRT从7.2升级到8.5时,改写plugin过程中需要注意的内容。原创 2023-06-07 18:07:37 · 1559 阅读 · 0 评论 -
PyTorch2.0向后兼容性和加速效果浅探
在PyTorch2022开发者大会上,PyTorch团队发布了一个新特性——,将PyTorch的性能推向了新的高度,称这个新版本为PyTorch2.0。的引入不影响之前的功能,其是一个完全附加和可选的功能,因此PyTorch2.0完全向后兼容,基于之前1.x版本开发的项目可以直接迁移到PyTorch2.0使用。原创 2023-05-13 19:58:01 · 3620 阅读 · 1 评论 -
TensorFlow的GPU使用相关设置整理
TensorFlow是一个在机器学习和深度学习领域被广泛使用的开源软件库,用于各种感知和语言理解任务的机器学习。默认情况下,TensorFlow 会映射进程可见的所有 GPU(取决于 CUDA_VISIBLE_DEVICES)的几乎全部内存。这是为了减少内存碎片,更有效地利用设备上相对宝贵的 GPU 内存资源。但有时我们不需要这种特性,所以需要想办法避免这种情况。本文简要介绍TensorFlow的GPU使用相关设置。原创 2022-11-08 21:25:22 · 4000 阅读 · 0 评论 -
无CUDA支持的dlib库的安装与使用
Dlib 是一个 C++ 工具包,被广泛应用于工业和学术界。Dlib 的开源许可允许在任何应用程序中免费使用它。Dlib支持导出其他编程语言如Python的binding。在Python环境下一般安装dlib很方便,直接使用pip安装即可。但是某些时候由于CUDA支持的问题导致部分模型使用dlib库进行推理会出现异常。本文简要介绍无CUDA支持的dlib库的安装与使用。原创 2022-11-08 19:45:00 · 1343 阅读 · 0 评论 -
caffemodel2pytorch使用记录
前言caffemodel2pytorch是用于对caffe模型转PyTorch模型的工具。对于需要对模型进行框架间的迁移帮助很大。caffemodel2pytorch安装和测试安装所需依赖环境安装protobuf,注意使用root安装,或使用sudo权限安装。wget https://github.com/google/protobuf/archive/v2.6.1.zipunzip protobuf-2.6.1.zipcd protobuf-2.6.1如果网络能ping通google,原创 2022-05-27 14:07:02 · 882 阅读 · 0 评论 -
PyTorch中F.conv2d从ONNX到TensorRT的支持
前言在使用PyTorch进行网络训练得到.pth模型文件后,我们可能会做一些模型部署和加速的工作。这里一般会涉及到将PyTorch模型转为ONNX模型的过程。PyTorch自带了ONNX转换方法(torch.onnx.export),可以很方便的将一些仅包含通用算子的网络的PyTorch模型转为ONNX格式。另一方面,TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。在使用PyTorch训练得到网络模型原创 2022-04-13 11:21:48 · 1134 阅读 · 0 评论 -
使用tensorrt_inference库导出RetinaFace-R50模型到TensorRT Engine
前言TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。RetinaFace 作为一款InsightFace出品的较为优秀的单阶段人脸检测器,使用TensorRT进行模型转化来提升推理速度很有必要。RetinaFace TensorRT加速本文主要参考tensorrt_inference开源库,将RetinaFace -R50模型转为TensorRT engine并使用自带C++代码运行测试。原创 2022-03-24 21:00:27 · 5401 阅读 · 0 评论 -
PyTorch之自定义op扩展编译与加载 —— cpp_extension
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们通常会希望加载预训练模型文件的参数,如果网络结构不变,只需要使用load_state_dict方法即可。而当我们改动网络结构后,由于load_state_dict方法要求读入的state_dict的key和net.state_dict()的key对应相等,如果有缺少就会报错。这个时候我们通常希望加载未改动部分结构的参数用来初始化网络。版权说明本文为原创文章,独家发布在blog.csdn.net/TracelessLe。原创 2021-12-31 11:00:58 · 5550 阅读 · 21 评论 -
TensorRT debug及FP16浮点数溢出问题分析
前言TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。除了常规的加速功能外,TensorRT还提供了一套可用于engine生成过程中debug的工具,包括Polygraphy、ONNX GraphSurgeon和PyTorch-Quantization。这些小工具用处很大,值得花时间进一步研究。Debug方法示例polygraphyPolygraphy是TensorRT官方提供的一系列小工具合集原创 2021-10-08 20:02:18 · 7817 阅读 · 3 评论 -
ONNX转TensorRT加速模型推理
前言TensorRT是NVIDIA推出的一款高效深度学习模型推理框架,其包括了深度学习推理优化器和运行时,能够让深度学习推理应用拥有低时延和高吞吐的优点。本质上来讲,就是通过采用对模型中的部分算子进行融合、对特定尺寸的算子选用更好的实现方法,以及使用混合精度等方式,最终加速整个网络的推理速度。在使用PyTorch训练得到网络模型后,我们希望在模型部署时通过TensorRT加速模型推理,那么可以先将PyTorch模型转为ONNX,然后再讲ONNX转为TensorRT的engine。实现步骤PyT原创 2021-09-30 18:15:21 · 9349 阅读 · 22 评论 -
PyTorch模型转ONNX格式
前言在使用PyTorch进行网络训练得到.pth模型文件后,我们可能会做一些模型部署和加速的工作。这里一般会涉及到将PyTorch模型转为ONNX模型的过程。PyTorch自带了ONNX转换方法(torch.onnx.export),可以很方便的将一些仅包含通用算子的网络的PyTorch模型转为ONNX格式。转换步骤准备模型文件将PyTorch模型文件准备好,放在’./weights/torch.pth’路径下。编写转换代码import torchTORCH_WEIGHT_PATH =原创 2021-09-30 16:16:40 · 4092 阅读 · 2 评论 -
访问远程服务器tensorboard
前言有时候我们需要查看远程服务器的网络训练情况,例如查看阿里云主机上的tensorboard。可以按照如下步骤实现该功能。远程机器打开tensorboard服务:tensorboard --logdir=./runs本地机器1、端口映射:ssh -L 6006:127.0.0.1:6006 -N -f root@remote_ip其中,remote_ip为远程机器的公网IP。2、打开tensorboard页面:在本机浏览器打开 http://127.0.0.1:6006 或原创 2021-09-30 15:08:15 · 2024 阅读 · 3 评论 -
数据预处理中的归一化与反归一化
前言在使用深度学习框架构建训练数据时,通常需要数据归一化(Normalize),以利于网络的训练。而在训练过程可视化中,通常需要反归一化。以PyTorch框架而言,提供了torchvision.transforms.Normalize(mean, std, inplace=False)方法用于归一化。归一化归一化的实质是将数据的分布根据均值和标准差进行调整。#torchvision.transforms.Normalize(mean, std, inplace=False)output[chan原创 2021-04-22 17:36:07 · 5679 阅读 · 0 评论 -
使用PyTorch冻结模型参数的方法
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们会加载已有的预训练模型文件的参数,如果网络结构不变,希望使用新数据微调部分网络参数。这时我们则需要冻结部分参数,禁止其更新。方法(1)通过遍历网络结构,设置梯度更新requries_grad = False。 # 冻结network1的全部参数和network2的部分参数 for name, parameter in network1.named_parameters(): parameter.requri原创 2021-04-10 16:49:40 · 21225 阅读 · 6 评论 -
使用PyTorch加载模型部分参数方法
前言在深度学习领域,经常需要使用其他人已训练好的模型进行改进或微调,这个时候我们通常会希望加载预训练模型文件的参数,如果网络结构不变,只需要使用load_state_dict方法即可。而当我们改动网络结构后,由于load_state_dict方法要求读入的state_dict的key和net.state_dict()的key对应相等,如果有缺少就会报错。这个时候我们通常希望加载未改动部分结构的参数用来初始化网络。方法方法一:strict=False直接使用load_state_dict提供的参数s原创 2021-04-10 16:35:48 · 8972 阅读 · 11 评论 -
PyTorch使用F.cross_entropy报错Assertion `t >= 0 && t < n_classes` failed问题记录
前言在PyTorch框架下使用F.cross_entropy()函数时,偶尔会报错ClassNLLCriterion ··· Assertion `t >= 0 && t < n_classes ` failed。错误信息类似下面打印信息:/py/conda-bld/pytorch_1490981920203/work/torch/lib/THCUNN/ClassNLLCriterion.cu:52: void cunn_ClassNLLCriterion_updateO原创 2021-03-06 20:47:41 · 14566 阅读 · 6 评论 -
Ubuntu20.04上3090显卡安装Nvidia驱动和CUDA11.1及cuDNN8.0.4
前言GeForce RTX 3090是最新显卡,CUDA支持也只支持到最新版本11.0及以上。本文记录了GeForce RTX 3090安装驱动和CUDA11.1、cuDNN等过程,CUDA11.1和cuDNN与CUDA10.1及以前的安装过程略有不同。----------软硬件信息------------ 操作系统:Ubuntu20.04 显卡:GeForce RTX 3090------------------------------一、安装Nvidia驱动根据显卡型号3090,去官网原创 2021-01-15 21:35:38 · 18562 阅读 · 4 评论 -
Ubuntu20.04系统CUDA11.1环境上MXNet源码安装
前言MXNet预编译包目前支持CUDA8.0至CUDA11.0等常用版本,可以直接通过pip安装。而在新的GeForce 3090显卡上,如果安装了CUDA11.1,则无法采用这种便捷方式安装MXNet。通过查找资料,发现可以通过源码安装的方式兼容CUDA11.1。安装下载源码git clone --recursive https://github.com/apache/incubator-mxnet mxnetcd mxnetgit checkout 1.8.0.rc2若采用下面这种原创 2021-01-15 21:05:44 · 3563 阅读 · 15 评论 -
Ubuntu18.04下安装caffe和pycaffe
安装caffeUbuntu18.04下可以快捷安装caffe:sudo apt install caffe-cuda安装pycaffe其实只需要将caffe-cuda下的编译包拷贝到python环境(或者conda下的python环境):cp -r /usr/lib/python3/dist-packages/caffe /home/user/conda/envs/env_name/lib/python3.6/site-packages/Python使用caffeimport caffe原创 2020-08-12 22:21:55 · 1266 阅读 · 2 评论 -
PyTorch使用tensorboard的SummaryWriter报错Segmentation fault
PyTorch使用tensorboard可以显示网络运行情况,但偶尔使用SummaryWriter时遇到Segmentation fault错误。import xxxfrom torch.utils.tensorboard import SummaryWriterimport yyylog_dir = './run_logs'self.writer = SummaryWriter(log_dir)报错如下(不同的路径可能具体Stack trace不同,但都是同一个问题):Segmentat原创 2020-08-07 16:57:49 · 3141 阅读 · 3 评论 -
使用Visdom可视化工具初体验
前言Visdom是Facebook专门为PyTorch开发的一款可视化工具,支持传入的数据类型有NumPy和Tensor。我们可以用它来做网络训练或者其他数据展示的前端可视化页面。官方给出的效果图如下:安装需要 Python 3 环境,需要提前安装依赖(1)通过pip安装,稳定版,可能不支持最新的一些功能和特性。pip install visdom(2)通过源码安装从github上下载源码后安装。pip install -e .如果上述命令出错,可以尝试下面命令:easy_i原创 2020-07-30 21:48:58 · 1022 阅读 · 0 评论 -
PyTorch中CNN网络参数计算和模型文件大小预估
前言在深度学习CNN构建过程中,网络的参数量是一个需要考虑的问题。太深的网络或是太大的卷积核、太多的特征图通道数都会导致网络参数上升。写出的模型文件也会很大。所以提前计算网络参数和预估模型文件大小很重要。网络参数计算先定义好网络结构,然后统计网络参数。网络定义以LeNet-5为例,参考之前的博客《PyTorch构建网络示例:LeNet-5》,网络结构设计代码如下:import torchfrom torch import nnimport torch.nn.functional as F原创 2020-07-24 19:26:50 · 6145 阅读 · 4 评论 -
PyTorch函数之torchvision.transforms.ToTensor()和Normalize()
最近处理图像经常用到以下部分操作:import torchvision.transforms as transformstransform.ToTensor()transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))一般采用OpenCV读取到的图片像素点单个通道的值域范围为[0,255]。ToTensor()能够把范围从[0,255]变换到[0,1]之间。Normalize()则把值域范围从[0,1]变换到[-1,1]。具体而言,对每个通道Normal原创 2020-07-06 20:15:28 · 2116 阅读 · 0 评论 -
PyTorch使用tensorboard显示网络运行情况
PyTorch使用tensorboard可以显示网络运行情况,和TensorFlow的tensorboard使用很类似。均需要安装tensorboard包。pip install tensorboard==1.15.0导入:from torch.utils.tensorboard import SummaryWriter指定log路径:log_dir = './run_logs'self.writer = SummaryWriter(log_dir)写入到log:self.writer原创 2020-07-02 16:25:26 · 1351 阅读 · 0 评论 -
PyTorch指定GPU并行训练小记
假设一台机器上有多块GPU。给定需要训练的模型,每块GPU将分别独立维护一份完整的模型参数。在模型训练的任意一次迭代中,给定一个小批量,将该批量中的样本划分成若干份并分给每块GPU一份。然后,每块GPU将分别根据自己分到的训练数据样本和自己维护的模型参数计算模型参数的梯度。接下来把这若干块GPU上分别计算得到的梯度相加,从而得到当前的小批量梯度。之后,每块GPU都使用这个小批量梯度分别更新自己维护的那一份完整的模型参数。在多GPU的机器上,要选择特定的GPU来运行程序,可在程序运行命令前使用命令:CUD原创 2020-06-23 23:24:56 · 661 阅读 · 0 评论 -
TensorFlow在各操作系统下各版本对应关系(Python版本/编译器/构建工具/cuDNN/CUDA)
官网最新信息持续更新中:https://tensorflow.google.cn/install/sourceLinuxCPU版本Python 版本编译器构建工具tensorflow-2.1.02.7、3.5-3.7GCC 7.3.1Bazel 0.27.1tensorflow-2.0.02.7、3.3-3.7GCC 7.3.1Bazel 0.26.1tensorflow-1.14.02.7、3.3-3.7GCC 4.8Bazel 0.24.1原创 2020-06-20 21:15:39 · 5772 阅读 · 0 评论 -
Ubuntu18.04安装多个CUDA
前言很多时候配置深度学习的环境都会遇到这样一个问题,就是参考的不同的开源代码所用的环境不一定相同,特别是CUDA环境,一般会有CUDA9.0、CUDA10.0、CUDA10.1等版本。所对应的cuDNN也会不同。本文是在已安装CUDA10.0+cudnn7.6.4的基础上,加装CUDA9.0+cudnn7.3.1。一、gcc降级由于CUDA 9.0仅支持gcc6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,因此需要手动进行降级,这里采用4.8版本。sudo apt-get ins原创 2020-06-20 15:39:50 · 1645 阅读 · 3 评论 -
Ubuntu18.04上外接显卡扩展坞安装Nvidia驱动和CUDA10.0及cuDNN
前言一通折腾,算是把显卡扩展坞给接上用起来了。能找到的Ubuntu外接显卡扩展坞配置深度学习环境的资料比较少,乱折腾一番总算是能用了。现努力回忆过程,尽可能完整地记录下来配置环境的过程。-------软硬件信息--------------------电脑:thinkpad笔记本,自带Intel集显操作系统:Windows10+Ubuntu18.04双系统显卡扩展坞:技嘉RTX 2080Ti 显卡坞 “雕盒”-----------------------------------显卡扩展坞在Wi原创 2020-06-18 22:01:31 · 3203 阅读 · 0 评论 -
【转载】PyTorch 使用不同版本的CUDA
由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中,不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息。由于 Pytorch 和 cuda 版本的更新较快,可能出现程序的编译和运行需要之前版本的 Pytorch 和 cuda 进行运行环境支持的情况。比如笔者遇到的某个项目中编写了 CUDAExtension 拓展,而其中使用的 cuda 接口函数在新版本的 cuda 中做了修改,使得直接使用系统转载 2020-06-11 21:33:35 · 2373 阅读 · 3 评论 -
PyTorch构建网络示例:LeNet-5
采用PyTorch构建网络,主要需要定义网络(Net)和定义前向传播函数(forward)。以LeNet-5为例,网络图和代码如下:import torchfrom torch import nnimport torch.nn.functional as Ffrom torchvision import datasets, transformsimport torch.utils.data as Dataimport torch.optim as optimfrom matplotlib原创 2020-05-29 19:50:47 · 605 阅读 · 0 评论 -
TensorFlow学习笔记1:安装和验证
推荐TF官方指南:(可能需要自备梯子)https://tensorflow.google.cn/install/pip根据实际情况挑选适合自己设备的安装包。本处采用Ubuntu 16.04 (64 位)系统,tensorflow-gpu(支持GPU的版本),Python 3.5环境。采用virtualenv虚拟环境搭建TF,(1)创建TF学习专用虚拟环境:①创建一个新的虚拟环境(http...原创 2019-01-03 10:18:59 · 986 阅读 · 0 评论 -
TensorFlow学习笔记2:"Hello World!"
本文参考TF官方入门程序链接:https://tensorflow.google.cn/tutorials/keras/basic_classification推荐直接看以上链接中的官方教程,如果无法打开该链接可以直接看以下内容,以下为官方内容的一个搬运,以保证本系列的完整性,便于自己学习使用。本教程会训练一个对服饰(例如运动鞋和衬衫)图像进行分类的神经网络模型。本教程使用 tf.kera...转载 2019-01-03 18:23:10 · 1412 阅读 · 1 评论 -
使用caffe自带的工具绘制loss函数曲线
由于最近使用caffe训练一个网络,学习了如何使用训练过程中生成的log来绘制loss函数曲线,主要用于观察所训练的网络是否收敛。 前提:安装完caffe后已经对pycaffe和matcaffe编译过了。 接下来从训练过程如何生成训练状态的日志(log)说明,直到绘制出loss函数的曲线。 Step1.对网络训练的脚本文件train.sh进行修改,加上生成log的语句。 使用vim打开t原创 2017-05-05 21:22:51 · 930 阅读 · 0 评论 -
CUDNN7.0安装过程
前提:已经安装好CUDA9.0。①下载cudnn7.0软件包:cudnn-9.0-linux-x64-v7.tgz。②解压缩:tar zxvf cudnn-9.0-linux-x64-v7.tgz③安装:cd到cudnn解压后(名称为cuda)的include目录: cd cuda/include/复制头文件:sudo cp cudnn.h /usr/local/cuda/in...原创 2019-01-03 10:38:50 · 2839 阅读 · 1 评论