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

将Keras中含include_top=False的Inception模型转换为PyTorch

PyTorch版InceptionV3替代Keras实现方案

核心问题拆解

Keras里的include_top=False本质是只保留模型的卷积特征提取部分,同时允许自定义输入通道数。PyTorch的torchvision.models.inception_v3虽然没有这个参数,但可以通过以下操作实现完全等效的效果:


1. 适配单通道输入

PyTorch官方InceptionV3默认只支持3通道输入,需要手动修改第一层卷积的输入通道数为1:

import torch
import torchvision.models as models

# 初始化无预训练权重的InceptionV3
inception_model = models.inception_v3(weights=None, init_weights=True)
# 替换第一层卷积,将输入通道从3改为1
inception_model.Conv2d_1a_3x3.conv = torch.nn.Conv2d(
    in_channels=1, 
    out_channels=32, 
    kernel_size=(3, 3), 
    stride=(2, 2), 
    bias=False
)

2. 只保留特征提取模块(对应include_top=False)

PyTorch的InceptionV3将卷积特征提取逻辑封装在了features属性中,直接调用这部分就能得到和Kerasinclude_top=False一致的卷积输出:

# 取出纯特征提取模块
feature_extractor = inception_model.features
# 冻结所有层的权重,禁止反向传播更新
for param in feature_extractor.parameters():
    param.requires_grad = False

3. 完整代码及维度对齐说明

假设输入张量为PyTorch标准的通道在前格式(batch_size, 1, 129, 500),前向传播示例如下:

# 构造测试输入(batch_size=2)
input_tensor = torch.randn(2, 1, 129, 500)
# 执行特征提取
x = feature_extractor(input_tensor)
# 查看输出形状
print(x.shape)

若输出维度和原Keras的(None,2,14,2038)存在差异,可微调模型最后几层的池化/卷积参数,或额外添加适配层来对齐维度,具体可对照原Keras模型的输出结构调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:50:29