You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在YOLOv7的YAML配置文件中指定两层实现张量乘法?

在YOLOv7中配置张量乘法分支的YAML写法

1. 先搞定自定义Mul模块(如果还没做)

如果YOLOv7内置模块里没有你要的Mul,先在models/common.py里加个极简乘法模块:

class Mul(nn.Module):
    def forward(self, x1, x2):
        return x1 * x2

接着去models/yolo.py的parse_model函数里把这个模块注册进去,保证YAML能识别到它。

2. YAML里指定双输入层的正确格式

YOLOv7的YAML配置中,多输入模块的输入层需要用列表包裹,你可以用两种方式指定目标层:

  • 负数索引:-1代表当前层的前一层,-2代表前两层,以此类推,是相对位置
  • 数字编号:对应YAML里从0开始计数的层序号(第一个模块算0)

举个实际例子:
假设你要让Mul模块的输入是「当前分支的前一层(-1)」和「另一个分支的第1层(序号1)」,YAML里这么写:

# 前面的模块配置...
  - [-1, 1, Conv, [128, 1, 1]] # 先把当前通道调整到和目标层一致,避免形状不匹配报错
  - [[-1, 1], 1, Mul, []]      # 核心配置:用列表[-1,1]指定两个输入层,调用Mul模块
# 后面的模块配置...

如果目标层是固定序号的层,直接写数字就行,比如要调用第4层,就把1换成4。

3. 必须注意的细节

  • 两个输入张量的形状必须完全匹配(通道数、宽高都要一致),如果不一样,得先加Conv、Resize这类模块调整形状,不然乘法会直接报错
  • 输入层的顺序对应Mul模块里的x1和x2,如果乘法有顺序要求,别搞反了

内容的提问来源于stack exchange,提问作者Ariouat Hanane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:10:23