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

如何简化动态字符串列表的格式转换操作?

简化PyTorch Conv2d层字符串格式转换的方案

我明白你想要把批量的Conv2d层描述字符串转换成更紧凑的格式,还要给每个条目加上递增的序号对吧?咱们可以用正则表达式精准匹配并提取关键参数,结合你已有的代码框架,快速实现这个动态修改需求。

核心实现思路

  • 用正则表达式捕获原字符串里的所有关键参数:输入通道数、输出通道数、卷积核尺寸、步长、填充值
  • 遍历字符串列表时,给每个条目从1开始分配序号
  • 按照你需要的目标格式拼接提取到的参数,生成新的字符串

完整代码实现

import re

def modify_conv2d_strings(str_list):
    # 正则匹配模式:精准匹配原Conv2d字符串结构,捕获关键参数
    conv_pattern = r'Conv2d\((\d+), (\d+), kernel_size=\((\d+), (\d+)\), stride=\((\d+), (\d+)\), padding=\((\d+), (\d+)\)\)'
    modified_results = []
    
    # 遍历列表,给每个条目加序号(从1开始)
    for seq_num, original_str in enumerate(str_list, start=1):
        match_result = re.match(conv_pattern, original_str)
        if match_result:
            # 提取捕获到的所有参数
            in_channels, out_channels, k_h, k_w, s_h, s_w, p_h, p_w = match_result.groups()
            # 拼接成目标格式
            new_str = f'({seq_num}): Conv2d({in_channels} -> {out_channels}, {k_h}x{k_w}, {s_h},{s_w}, {p_h},{p_w})'
            modified_results.append(new_str)
        else:
            # 如果字符串不匹配格式,保留原内容(可根据需求调整处理逻辑)
            modified_results.append(original_str)
    
    return modified_results

使用示例

假设你有这样的原始字符串列表:

original_conv_list = [
    "Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))",
    "Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))"
]

# 调用函数转换
converted_list = modify_conv2d_strings(original_conv_list)

# 输出结果
for item in converted_list:
    print(item)

输出结果会是:

(1): Conv2d(3 -> 64, 3x3, 1,1, 1,1)
(2): Conv2d(64 -> 128, 3x3, 1,1, 1,1)

扩展适配说明

如果你的字符串存在其他变体(比如卷积核是单维度如kernel_size=(3,)、包含bias=False这类额外参数),可以调整正则模式来兼容。比如修改卷积核部分的匹配规则:

# 兼容单/双维度卷积核的正则模式
conv_pattern = r'Conv2d\((\d+), (\d+), kernel_size=\((\d+)(?:, (\d+))?\), stride=\((\d+), (\d+)\), padding=\((\d+), (\d+)\)(?:, .*)?\)'

这样就能处理带额外参数或者单维度卷积核的字符串了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:34:14