随笔分类 -  深度学习

摘要:一般深度学习的开发流程是训练好模型导出pth,然后转换为onnx。 但是如果一开始只有onnx,且onnx结构不是特别复杂,可以通过onnx反向推出pytorch模型结构。 下面用Horizon提出的mixvargenet做个例子,开发环境中只找到了onnx文件。 文件下载地址:https://gi 阅读全文
posted @ 2025-03-08 16:24 Dsp Tian 阅读(6) 评论(0) 推荐(0) 编辑
摘要:这里记录一下用yolo11训练coco数据集。 1、下载coco数据集:https://cocodataset.org/#download,下载这三个文件即可:2017 Train images [118K/18GB],2017 Val images [5K/1GB],2017 Train/Val 阅读全文
posted @ 2025-03-08 12:46 Dsp Tian 阅读(5) 评论(0) 推荐(0) 编辑
摘要:yolo11和yolo8后处理方法是完全一样的。 首先安装ultralytics,然后执行下面代码导出yolo11l.onnx模型。 from ultralytics import YOLO model = YOLO('yolo11l.pt') success = model.export(form 阅读全文
posted @ 2025-02-15 20:40 Dsp Tian 阅读(58) 评论(0) 推荐(0) 编辑
摘要:上一篇熟悉了LSTM之后,就可以用这个工具做nlp相关的实验了。 下面两组代码是使用LSTM做文本分类的实验: 一、更多使用自定义方法做文本分类的代码,有几个特点: 1. 数据集是根据csv文件格式解析的,用的自定义数据类。 2. 使用jieba分词。 3. 数据对齐使用了collate_fn和pa 阅读全文
posted @ 2025-02-03 16:22 Dsp Tian 阅读(9) 评论(0) 推荐(0) 编辑
摘要:三个网络的架构图: RNN: LSTM: GRU: 特性对比列表: 特性 RNN LSTM GRU 门控数量 无 3门(输入/遗忘/输出) 2门(更新/重置) 记忆机制 仅隐藏状态ht 显式状态Ct + 隐藏状态ht 隐式记忆(通过门控更新状态) 核心操作 直接状态传递 门控细胞状态更新 门控候选状 阅读全文
posted @ 2025-02-03 13:37 Dsp Tian 阅读(39) 评论(0) 推荐(0) 编辑
摘要:在深度学习中,归一化操作有BN,LN,GN,IN这几种形式,下表给出了各种方法的主要区别: 归一化方法 计算维度 固定维度 适用场景 特点 BatchNorm 沿 (N, H, W) 对每个通道独立计算 Channel 卷积神经网络 依赖批次大小,训练和推理行为不同 LayerNorm 沿 (C, 阅读全文
posted @ 2025-01-28 14:36 Dsp Tian 阅读(23) 评论(0) 推荐(0) 编辑
摘要:onnx对于einsum算子是在opset12之后才支持的,但是有些芯片对于onnx量化的支持只到opset11版本,遇到这种情况可以使用matmul替换einsum。 流程通常是将tensor先view成三维,然后将第一个tensor待消掉维度permute到最后一维,第二个tensor待消掉的维 阅读全文
posted @ 2025-01-26 22:31 Dsp Tian 阅读(29) 评论(0) 推荐(0) 编辑
摘要:将onnx模型参数从fp32转为fp16,可以减少一半模型大小。 import onnx from onnxconverter_common import float16 model = onnx.load("fp32.onnx") model_fp16 = float16.convert_floa 阅读全文
posted @ 2025-01-25 15:36 Dsp Tian 阅读(39) 评论(0) 推荐(0) 编辑
摘要:下面实现了深度学习中的几种优化器,包括SGD,Momentum, Nesterov,AdaGrad,RMSProp,AdaDelta,Adam和AdamW。 代码如下: import torch import torch.nn as nn from torchvision import transf 阅读全文
posted @ 2025-01-04 20:23 Dsp Tian 阅读(15) 评论(0) 推荐(0) 编辑
摘要:简单训练了一个模型,可以实现超分辨率效果。模型在这里。 模型用了一些卷积层,最后接一个PixelShuffle算子。 训练数据是原始图像resize后的亮度通道。 标签是原始图像的亮度通道。 损失函数设为MSE。 代码如下: import torch import torch.nn as nn im 阅读全文
posted @ 2024-12-21 21:48 Dsp Tian 阅读(20) 评论(0) 推荐(0) 编辑
摘要:截止这篇笔记,llama.cpp主分支暂时不支持部署VL模型,需要切到一个分支上编译。部署流程整理自这个帖子。 部署流程如下: 1. 在modelscope上将Qwen2-VL-7B-Instruct下载下来。 2. 下载llama.cpp,需要下载这个分支。 3. 编译llama.cpp,流程和上 阅读全文
posted @ 2024-11-17 23:46 Dsp Tian 阅读(1753) 评论(0) 推荐(0) 编辑
摘要:这里选用Qwen2.5-7B-Instruct做例子,其他LLM类似。 VL用这个流程暂时还不行,不过我看到llama.cpp有在讨论这个问题,我验证了也是可行的,后面整理一下。 这里部署流程如下: 1. 在modelscope上将Qwen2.5-7B-Instruct下载下来。 2. 在ggerg 阅读全文
posted @ 2024-11-17 23:44 Dsp Tian 阅读(779) 评论(1) 推荐(0) 编辑
摘要:变分自编码器(VAE,Variational Auto-Encoder)是一种生成模型,它通过学习数据的潜在表示来生成新的样本。 在学习潜空间时,需要保持生成样本与真实数据的相似性,并尽量让潜变量的分布接近标准正态分布。 VAE的基本结构: 1. 编码器(Encoder):将输入数据转换为潜在空间的 阅读全文
posted @ 2024-11-11 22:48 Dsp Tian 阅读(122) 评论(0) 推荐(0) 编辑
摘要:在做深度学习的时候,尤其是在没有界面的服务器上训练时,可以利用tensorboard工具输出各种曲线或中间图像。 下面代码将曲线和图像输出到run目录下临时文件中。 from tensorboardX import SummaryWriter from PIL import Image import 阅读全文
posted @ 2024-11-02 15:30 Dsp Tian 阅读(9) 评论(0) 推荐(0) 编辑
摘要:在做深度学习的时候经常会在这四种格式上互转。 转换时有几个需要注意的点: 1. np和cv2都能通过cv2.imshow显示出来。 2. torchvision的transforms会把HWC转为CHW。 3. from_numpy读取的HWC还是HWC,需要额外对tensor旋转。 4. pil和 阅读全文
posted @ 2024-10-19 14:35 Dsp Tian 阅读(78) 评论(0) 推荐(0) 编辑
摘要:模型参数直方图可以展示模型参数在训练过程中的分布情况。 通过直方图,可以了解模型的学习状态,识别过拟合或欠拟合问题,从而进行模型调优。 下面以ResNet18为例,显示了不同层的参数直方图。 import torchvision from matplotlib import pyplot as pl 阅读全文
posted @ 2024-10-03 11:57 Dsp Tian 阅读(42) 评论(0) 推荐(0) 编辑
摘要:可视化卷积核参数对理解卷积神经网络的工作原理、优化模型性能、提高模型泛化能力有一定帮助作用。 下面以ResNet18为例,可视化了部分卷积核参数。 import torchvision from matplotlib import pyplot as plt import torch model = 阅读全文
posted @ 2024-10-02 13:56 Dsp Tian 阅读(56) 评论(0) 推荐(0) 编辑
摘要:和FCN类似,UNet是另一个做语义分割的网络,网络从输入到输出中间呈一个U型而得名。 相比于FCN,UNet增加了更多的中间连接,能够更好处理不同尺度上的特征。 网络结构如下: 下面代码是用UNet对VOC数据集做的语义分割。 import torch import torch.nn as nn 阅读全文
posted @ 2024-10-01 15:10 Dsp Tian 阅读(223) 评论(0) 推荐(1) 编辑
摘要:深度学习中有些数据集可能不符合imagenet计算出的均值和标准差,需要根据自己的数据集单独计算。 下面这个脚本能够计算当前数据集均值和标准差。 import torch import os from PIL import Image from torchvision import transfor 阅读全文
posted @ 2024-10-01 13:21 Dsp Tian 阅读(86) 评论(0) 推荐(0) 编辑
摘要:深度学习骨干网络一般会包含很多层,这里写了一个脚本,可以保存骨干网络的所有特征图。 代码主要用了get_graph_node_names和create_featrue_extractor这两个函数。 get_graph_node_names是得到所有特征节点名字。 create_featrue_ex 阅读全文
posted @ 2024-09-30 22:31 Dsp Tian 阅读(91) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示