尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
tvm.relay.nn:TVM Relay 神经网络算子库实战指南
编译器深度学习模型优化【免费下载链接】tvmOpen deep learning compiler stack for cpu, gpu and specialized accelerators项目地址https://gitcode.com/gh_mirrors/tvm7/tvm点击查看免费下载导读tvm.relay.nn是 Apache TVM Relay IR 中的神经网络算子命名空间封装了卷积、池化、归一化、激活、全连接等深度学习基础算子。本文以 docs/reference/api/python/relay/nn.rst 文档为主线结合算子源码 python/tvm/relay/op/nn/nn.py 与其 C 注册实现系统梳理该模块的算子分类、参数语义、布局约定与注册机制帮助你读懂 Relay 算子 API、写出可移植的算子调用并掌握在 TVM 中扩展神经网络算子的完整路径。一、nn.rst 文档是什么面向 API 的自动生成参考docs/reference/api/python/relay/nn.rst是一个 Sphinx autodoc 指令文件本身不含算子实现而是通过 automodule 指令把tvm.relay.nn模块内所有成员含导入成员自动渲染为 API 文档tvm.relay.nn ------------ .. automodule:: tvm.relay.nn :members: :imported-members: :autosummary:它等价于tvm.relay.nn模块的文档入口真正的内容来自 Python 模块 docstring。tvm.relay.nn并不是一个独立目录而是通过 python/tvm/relay/op/nn/init.py 的from .nn import *将 python/tvm/relay/op/nn/nn.py约 3800 行暴露到tvm.relay.op.nn并最终通过 python/tvm/relay/op/init.py 的from . import nn汇聚到tvm.relay.nn。因此本文档的实际主体是模块内每一个算子的 docstring它们给出数学公式、参数表、默认值和返回值约定是使用 Relay 算子的一手资料。二、算子全景按功能分类的 API 地图从nn.py源码的函数清单看模块覆盖了构建神经网络计算图所需的全部基础算子可归纳为五类类别代表算子说明卷积/反卷积conv1d、conv2d、conv3d、conv1d_transpose、conv2d_transpose、conv3d_transpose、contrib_conv3d_winograd_without_weight_transform标准卷积及转置卷积含 layout/dilation/groups 控制池化max_pool1d/2d/3d、avg_pool1d/2d/3d、global_max_pool2d、global_avg_pool2d、max_pool2d_grad、avg_pool2d_grad最大/平均/全局池化及其梯度算子归一化batch_norm、instance_norm、layer_norm、lrn、l2_normalize批归一化含 moving 统计量、实例归一化、层归一化、局部响应归一化激活relu、leaky_relu、prelu、softmax、fast_softmax、log_softmax、dropout、dropout_raw常用激活与 softmax 系列全连接/其他dense、contrib_dense_pack、matmul、bias_add、batch_flatten、pad、dilate、mirror_pad、upsampling、upsampling3d、fifo_buffer线性变换、展平、填充、上采样等每个算子函数均返回tvm.relay.Expr类型的计算节点可直接参与构建 Relay 表达式图并由后续 pass如SimplifyExpr、FoldConstant进一步优化。三、卷积算子从参数语义到布局约定conv1d是模块中最典型的卷积 API。其签名源码位置为conv1d(data, weight, strides1, padding0, dilation1, groups1, channelsNone, kernel_sizeNone, data_layoutNCW, kernel_layoutOIW, out_layout, out_dtype)在默认NCW数据与OIW权重布局下输入形状为(batch_size, in_channels, width)权重形状为(channels, in_channels, kernel_size)输出计算规则为out[b, c, w] Σ_{dw,k} data[b, k, strides[0]*w dw] * weight[c, k, dw]关键参数语义strides卷积滑动步长默认 1接受 int 或 tuplepadding卷积前在输入两侧填充的大小默认 0dilation空洞卷积膨胀率作用于权重groups分组卷积的组数1D 卷积当前未使用该参数channels / kernel_size输出通道数与卷积核空间尺寸data_layout / kernel_layout / out_layout数据、权重与输出布局语义上算子会先将 layout 转换为规范布局数据NCW、权重OIW完成计算再转换到out_layout默认与data_layout相同out_dtype混合精度卷积的输出数据类型。conv2d源码位置在此基础上支持groups分组卷积conv3d源码位置将布局扩展为NCDHW/OIDHW。三个函数在入口处统一处理 int 参数的元组化并调用get_pad_tuple1d/2d/3d定义于 python/tvm/relay/op/nn/utils.py规范化 padding 表示。转置卷积族conv1d_transpose/conv2d_transpose/conv3d_transpose则用于上采样类网络结构如反卷积解码器。混合精度与专用实现out_dtype参数为混合精度推理提供入口配合 C 侧的 mixed precision 注册见 python/tvm/relay/op/init.py 中的register_mixed_precision_conversion实现如 FP16 权重、FP32 累加的卷积。此外模块还提供contrib_conv3d_winograd_without_weight_transform这类 contrib 级优化算子直接对接 Winograd 算法省去权重变换阶段以换取更高吞吐。四、池化与上采样池化族覆盖 1D/2D/3D 的最大池化与平均池化统一签名风格以 max_pool2d 为例max_pool2d(data, pool_size(1, 1), strides(1, 1), dilation(1, 1), padding(0, 0), layoutNCHW, out_layout, ceil_modeFalse)参数要点pool_size池化窗口尺寸默认 (1,1)strides / dilation / padding与卷积语义一致layout / out_layout布局控制2D 默认NCHWceil_mode是否向上取整输出尺寸影响边缘窗口是否参与计算。global_max_pool2d(data, layoutNCHW, out_layout)与global_avg_pool2d是空间维全池化算子输出形状直接由布局中非通道维决定常用于分类网络最后的特征压缩。梯度算子max_pool2d_grad、avg_pool2d_grad供训练/自动微分路径使用。上采样族包含upsampling源码位置与upsampling3d源码位置支持scale_h/scale_w、methodnearest/bilinear/bicubic 等与coordinate_transformation_mode如half_pixel/align_corners等参数是语义分割等逐像素任务网络的标准组件。五、归一化batch_norm 及其 moving 统计量batch_norm源码位置是模块中最复杂的归一化算子签名与更新公式batch_norm(data, gamma, beta, moving_mean, moving_var, axis1, epsilon1e-5, centerTrue, scaleTrue)归一化公式out[:,i,...] (data[:,i,...] - data_mean[i]) / sqrt(data_var[i] epsilon) * gamma[i] beta[i]其中data_mean/data_var在 axis 指定的通道维上统计。gamma与beta的形状为(k,)k 为 axis 上的维度大小。除输入输出外算子还接收两个辅助状态moving_mean、moving_vark 长度向量保存全数据集统计量按动量方式更新moving_mean moving_mean * momentum data_mean * (1 - momentum) moving_var moving_var * momentum data_var * (1 - momentum)axis默认 1指定为 -1 时通道轴取输入形状最后一维。center/scale控制是否使用beta/gamma项。docstring 特别提示推理阶段该算子可被优化掉先验统计量可被折叠进卷积/全连接权重对应 TVM 的FoldConstant、SimplifyInference等 pass。同族的instance_norm源码位置与layer_norm源码位置分别按实例和按层默认axis-1统计归一化均带epsilon1e-5、centerTrue、scaleTrue默认值是 GAN 与 Transformer 类网络的标准组件。六、激活与 softmax 系列激活族 API 简洁源码位置算子数学定义默认参数relu(data)out max(x, 0)—leaky_relu(data, alpha0.01)y x 0 ? x : alpha*xalpha0.01prelu(data, alpha, axis1)按通道学习斜率的 Leaky ReLU—softmax 族包括softmax(data, axis-1)softmax(x)_i exp(x_i) / Σ_j exp(x_j)fast_softmax(data, axis-1)用近似指数函数加速计算log_softmax(data, axis-1)对 softmax 取对数数值更稳定。三者 docstring 均注明推理时可被优化掉因为归一化常数可在常量折叠阶段消去。dropout(data, rate0.5)与dropout_raw实现训练期随机置零rate为丢弃概率。七、全连接与工具算子dense源码位置实现线性变换Y X * W^T输入形状(d_1,...,d_n, units_in)权重(units, units_in)输出(d_1,...,d_n, units)支持units与混合精度out_dtype。contrib_dense_pack是打包权重的 contrib 变体matmul支持transpose_a/transpose_b。其余工具算子bias_add(data, bias, axis1)沿指定轴添加偏置batch_flatten(data)将批量维之外的维度展平pad(data, pad_width, pad_value0, pad_modeconstant)常量/反射等模式填充dilate/mirror_pad膨胀填充与镜像填充fifo_bufferCNN 滑窗输入的计算复用缓冲。八、算子如何落地从 Python 到 C 注册理解tvm.relay.nn需要看到 docstring 之下的实现机制。以relu为例Python 侧仅是一层薄封装def relu(data): ... return _make.relu(data)真正的算子节点构造在 python/tvm/relay/op/nn/_make.py 中它通过 FFI 绑定到 C 侧tvm.relay.op.nn._make.relu的实现对应src/relay/op/nn/下的注册代码如nn.cc中RELAY_REGISTER_OP(nn.relu)的set_attrs_type与set_support_level。_make.py中的_make_*函数统一把 Python 参数序列化为tvm.runtime可理解的 Attrs 结构调用 C 的 Op 构造器生成CallNode。nn.py与_nn.py的分工体现了 TVM 的惯例对外 API含布局规范化、默认值、类型转换在 Python 侧完成而算子语义、类型关系type relation、梯度与调度策略在 C 侧注册。这让用户既能以纯 Python 方式快速搭建 Relay 计算图又能通过 C 注册的FTVMCompute生成 TIR 计算。九、快速上手指南在完成 TVM 构建参考 docs/install/from_source.rst并配置好 Python 环境后即可直接使用本模块import tvm from tvm import relay # 构造输入与权重 data relay.var(data, relay.TensorType((1, 3, 224, 224), float32)) weight relay.var(weight, relay.TensorType((16, 3, 3, 3), float32)) # 2D 卷积 ReLU 全局平均池化 conv relay.nn.conv2d(data, weight, strides1, padding1, channels16, kernel_size3) act relay.nn.relu(conv) pool relay.nn.global_avg_pool2d(act) # 查看表达式 print(pool)所有算子返回relay.Expr可直接组合成函数并用relay.build编译到 CPU/GPU 等目标。布局参数如data_layout是跨硬件移植的关键开关建议参考 docs/arch/convert_layout.rst 理解 layout 转换对性能的影响。十、深入阅读建议API 参考主入口docs/reference/api/python/relay/index.rst算子完整实现python/tvm/relay/op/nn/nn.py算子注册与 FFI 封装python/tvm/relay/op/nn/_make.py、python/tvm/relay/op/nn/_nn.pylayout 工具函数python/tvm/relay/op/nn/utils.py测试用例tests/python/relay/test_op_nn.py等见tests/python/relay/目录赞分享编译器深度学习模型优化【免费下载链接】tvmOpen deep learning compiler stack for cpu, gpu and specialized accelerators项目地址https://gitcode.com/gh_mirrors/tvm7/tvm点击查看免费下载相关推荐PyTorch图神经网络GNNPyG库实战指南PyTorch图神经网络GNNPyG库实战指南 引言从图数据到智能决策的桥梁 你是否曾面临这些挑战社交网络中如何精准推荐好友分子结构如何预测化合物性质人工智能机器学习深度学习分布式训练模型编译神经网络算子实战指南DeepONet与FNO在科学计算中的性能对比神经网络算子实战指南DeepONet与FNO在科学计算中的性能对比 科学计算领域正在经历一场由深度学习驱动的革命其中神经网络算子技术为解决复杂偏微分方程提供人工智能科学计算机器学习科研PyTorch Geometric图神经网络优化终极指南计算图优化与算子融合实战PyTorch Geometric图神经网络优化终极指南计算图优化与算子融合实战 PyTorch GeometricPyG是构建高效图神经网络GNN的人工智能机器学习深度学习图计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

系统接口设计对接方案:从契约设计到联调排错的完整实践

系统接口设计对接方案:从契约设计到联调排错的完整实践

简介:系统接口设计对接方案是一份面向系统架构师、后端开发与集成工程师的接口设计文档,重点解决跨系统对接时面临的安全、标准、数据格式与运维责任划分等问题。文档以SOA体系架构为基础,系统讲解了服务目录标准(UDDI v2&#xf…

📅 2026/9/23 21:23:35
ZY-Player开源播放器:跨平台本地与网络视频聚合管理实践

ZY-Player开源播放器:跨平台本地与网络视频聚合管理实践

1. 一个周末刷剧需求引发的开源播放器探索先说结论:如果你手头有一台 Windows 或者 Mac,平时喜欢把各种本地视频、网络视频源集中在一个干净的界面里管理,又不想被各种弹窗广告和会员墙恶心到,那 ZY-Player 这个开源项目值得你花一…

📅 2026/9/23 21:23:35
注胶南红用紫光灯能照出来吗?直播间看到的颜色和实物会有色差吗?

注胶南红用紫光灯能照出来吗?直播间看到的颜色和实物会有色差吗?

南红品牌怎么选不踩坑?选南红品牌,核心是看是否坚守"不注胶、不染色、不烤色"的三不标准。专做南红16年的天喜红运珠宝,拥有5000平米展厅,从原矿到销售一条龙,没有中间商,支持复检(任…

📅 2026/9/23 21:23:35
MORE NEWS

更多资讯

📰

TVM 部署指南:使用 mrvl 将模型编译并运行于 Marvell MLIP(Octeon DPU / 模拟器)

TVM 部署指南:使用 mrvl 将模型编译并运行于 Marvell MLIP(Octeon DPU / 模拟器) 【免费下载链接】tvm Open deep learning compiler stack for cpu, gpu and specialized accelerators 项目地址: https://gitcode.com/gh_mirrors/tvm7/tvm…

📰

Python+LSTM文本情感分析系统:从词袋到序列建模的工程实践

简介:完整LSTM文本情感分析系统源码面向高校学生和Python开发者,可满足毕业设计、课程设计或期末大作业需求,代码经本地编译验证,评审分达98分,难度适中,内容已通过助教审定。资源包为ZIP格式,共…

📰

PyTorch人脸性别识别GUI实战:从模型训练到PyQt5界面集成

简介:这份资源面向计算机、人工智能相关专业的本科生与自学者,提供一套基于PyTorch实现人脸性别识别的完整课程设计或毕业设计参考方案。数据集涵盖白种人、黄种人、黑种人等多种族样本,并包含姿态、光照、年龄等干扰因素,需按40%…

📰

医疗影像碎片检测YOLO数据集:标注体系、训练实战与调优避坑

简介:面向医疗影像AI开发与临床研究场景,这份YOLO格式数据集覆盖碎片、忽略区域、结构集合三类标注,可用于碎片检测、干扰过滤与结构定位多任务联合训练。共1277张影像,划分训练894张、验证255张、测试128张,标注经医学…

📰

Yii 2 页面缓存实战指南:用 PageCache 过滤器缓存整页输出

Yii 2 页面缓存实战指南:用 PageCache 过滤器缓存整页输出 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 页面缓存(Page Caching)是 Yii 2 在服务…

📰

EN1175-2020工业卡车电气安全设计核心解析

简介:本资源为欧洲标准EN 1175:2020《工业卡车的安全——电气/电子要求》中文版全文PDF,面向工业车辆制造商、安全工程师、设备检测机构及特种作业合规管理人员,解决工业搬运车辆在电气设计、控制接口、能量连接、EMC防护及维护验证等环节的安…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬