news 2026/9/3 3:04:58

cudnn尝试vgg

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cudnn尝试vgg

自己用c++写vgg,写了两个版本才成功,其实就是3*3卷积,padding等于1.

没想cudnn实现起来很方便:一个是参考程序类封装的好,一个是cudnn写好了调用函数,这里只展示vgg改成功的代码,详细代码见:

class LeNet :public Layer {
public:

LeNet(cublasHandle_t &cublas_, cudnnHandle_t &cudnn_, int batch_) :cublas(cublas_), cudnn(cudnn_), batch(batch_) {
layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 3, 12, 32, 32, 3));//输入->>>c1,5*5,1*28*28-》6*24*24
layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 12, 30, 30)); //输入->>>c1,5*5,1*28*28-》6*24*24

layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 12, 12, 30, 30, 3));//输入->>>c1,5*5,1*28*28-》6*24*24
layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 12, 28, 28)); //输入->>>c1,5*5,1*28*28-》6*24*24

layers.emplace_back(std::make_shared<MaxPool2D>(cudnn, batch, 12, 28, 28, 2, 2, 0, 2)); //s2,6*24*24->>6*12*12
layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 12, 24, 14, 14, 5));//c3,6*12*12->>16*8*8
layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 24, 10, 10)); //c3,6*12*12->>16*8*8
layers.emplace_back(std::make_shared<MaxPool2D>(cudnn, batch, 24, 10, 10, 2, 2, 0, 2)); //s4,16*8*8->>16*4*4
layers.emplace_back(std::make_shared<Linear>(cublas, batch, 24 * 5 * 5, 120));//c5,16*4*4->>>120
layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 120, 1, 1)); //c5,16*4*4->>>120
layers.emplace_back(std::make_shared<Linear>(cublas, batch, 120, 84));//120->84
layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 84, 1, 1)); //120->84
layers.emplace_back(std::make_shared<Linear>(cublas, batch, 84, 10));//84->10
cudaMalloc(&output, batch * 10 * sizeof(float));
cudaMalloc(&grad_input, batch * 3 * 32*32 * sizeof(float));
}

......

};
————————————————

以上加红的改为:

layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 3, 12, 32, 32, 3,1,1));

layers.emplace_back(std::make_shared<ReLU>(cudnn, batch, 12, 30, 30));

layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 12, 12, 30, 30, 3,1,1));

其他的cudnn函数和类封装就自动处理了,很方便,不像自己哼哧哼哧写了两天,详细见:

我的第二个cudnn程序(训练cifar10突破60分)-CSDN博客

我的第一个cudnn(cuda)人工智能程序(lenet)-CSDN博客

c++的cpu完成的vgg代码也有,可以参考:

lenet改vgg训练cifar10突破71分-CSDN博客

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 1:55:38

5分钟学会Z-Image-Turbo:孙珍妮风格图片生成技巧

5分钟学会Z-Image-Turbo&#xff1a;孙珍妮风格图片生成技巧 1. 这个模型到底能做什么 你有没有想过&#xff0c;只用一句话描述&#xff0c;就能生成一张带着孙珍妮气质的高清人像&#xff1f;不是简单贴图&#xff0c;不是粗糙换脸&#xff0c;而是从构图、光影、神态到氛围…

作者头像 李华
网站建设 2026/9/3 1:30:29

BGE-Large-Zh小白指南:从安装到中文语义检索全流程

BGE-Large-Zh小白指南&#xff1a;从安装到中文语义检索全流程 想快速搭建一个能理解中文、能精准检索信息的AI工具吗&#xff1f;今天要介绍的BGE-Large-Zh镜像&#xff0c;就是一个让你在10分钟内就能上手的“中文语义搜索引擎”。它能把一段段文字变成机器能懂的“数字指纹…

作者头像 李华
网站建设 2026/9/3 1:32:08

手把手教学:AgentCPM本地研报生成工具部署教程

手把手教学&#xff1a;AgentCPM本地研报生成工具部署教程 你是否曾为撰写一份专业、详实、逻辑严密的行业研究报告而反复查阅资料、熬夜整理框架、反复修改措辞&#xff1f;是否担心数据上传到云端带来的隐私风险&#xff1f;又是否厌倦了在线服务的响应延迟、配额限制和网络…

作者头像 李华
网站建设 2026/9/2 22:45:48

RMBG-2.0新手指南:从安装到出图的完整教程

RMBG-2.0新手指南&#xff1a;从安装到出图的完整教程 还在为抠图烦恼吗&#xff1f;无论是想给商品换个背景&#xff0c;还是制作证件照&#xff0c;或者处理复杂的发丝边缘&#xff0c;传统工具要么操作繁琐&#xff0c;要么效果生硬。今天&#xff0c;我要带你体验一款全新…

作者头像 李华
网站建设 2026/9/3 1:20:30

零基础玩转BGE Reranker:手把手教你搭建文本相关性排序工具

零基础玩转BGE Reranker&#xff1a;手把手教你搭建文本相关性排序工具 你是否遇到过这样的问题&#xff1a;在做知识库问答、文档检索或内容推荐时&#xff0c;系统返回的前几条结果明明和你的问题“字面上很像”&#xff0c;读起来却完全不相关&#xff1f;比如搜索“Python…

作者头像 李华
网站建设 2026/9/2 22:41:11

Ollama框架加持:PasteMD本地化AI文本处理方案

Ollama框架加持&#xff1a;PasteMD本地化AI文本处理方案 你有没有过这样的时刻&#xff1a;刚开完一场信息密度爆炸的线上会议&#xff0c;会议纪要散落在聊天窗口、语音转文字记录和手写笔记里&#xff1b;或者深夜整理技术文档&#xff0c;面对一堆从不同网页复制粘贴过来的…

作者头像 李华