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

VGG16在R与Python中输入形状不匹配,如何解决?

问题:Keras Python项目迁移R语言时VGG16输入形状不匹配

问题描述

将基于Keras的Python项目迁移到R语言时,遇到输入形状不匹配问题:R中VGG16模型的输入形状为(None,3,224,224),而Python中为(None,224,224,3)。

尝试过的方法及错误

直接转换维度(失败)

尝试将图像维度转换为R要求的形状,触发MaxPooling相关错误:
ShapeError

ValueError: Input 0 of layer "vgg16" is incompatible with the layer: expected shape=(None, 3, 224, 224), found shape=(None, 224, 224, 3)

使用aperm转换维度的代码:

test = aperm(reshaped_img, c(1,4,2,3))

报错:

Error: Default MaxPoolingOp only supports NHWC on device type CPU

指定input_shape参数(失败)

加载模型时使用input_shape参数,因形状不匹配导致模型无法加载。

代码及模型结构

R代码

model <- application_vgg16(weights="imagenet", include_top=TRUE)
summary(model)

模型结构输出:

Model: "vgg16"
________________________________________________________________________________
 Layer (type)                       Output Shape                    Param #     
================================================================================
 input_3 (InputLayer)               [(None, 3, 224, 224)]           0           
 block1_conv1 (Conv2D)              (None, 64, 224, 224)            1792        
 block1_conv2 (Conv2D)              (None, 64, 224, 224)            36928       
 block1_pool (MaxPooling2D)         (None, 64, 112, 112)            0           
 block2_conv1 (Conv2D)              (None, 128, 112, 112)           73856       
 block2_conv2 (Conv2D)              (None, 128, 112, 112)           147584      
 block2_pool (MaxPooling2D)         (None, 128, 56, 56)             0           
 block3_conv1 (Conv2D)              (None, 256, 56, 56)             295168      
 block3_conv2 (Conv2D)              (None, 256, 56, 56)             590080      
 block3_conv3 (Conv2D)              (None, 256, 56, 56)             590080      
 block3_pool (MaxPooling2D)         (None, 256, 28, 28)             0           
 block4_conv1 (Conv2D)              (None, 512, 28, 28)             1180160     
 block4_conv2 (Conv2D)              (None, 512, 28, 28)             2359808     
 block4_conv3 (Conv2D)              (None, 512, 28, 28)             2359808     
 block4_pool (MaxPooling2D)         (None, 512, 14, 14)             0           
 block5_conv1 (Conv2D)              (None, 512, 14, 14)             2359808     
 block5_conv2 (Conv2D)              (None, 512, 14, 14)             2359808     
 block5_conv3 (Conv2D)              (None, 512, 14, 14)             2359808     
 block5_pool (MaxPooling2D)         (None, 512, 7, 7)               0           
 flatten (Flatten)                  (None, 25088)                   0           
 fc1 (Dense)                        (None, 4096)                    102764544   
 fc2 (Dense)                        (None, 4096)                    16781312    
 predictions (Dense)                (None, 1000)                    4097000     
================================================================================
Total params: 138,357,544
Trainable params: 138,357,544
Non-trainable params: 0
________________________________________________________________________________

Python代码

model = VGG16()
model = Model(inputs=model.inputs, outputs=model.output)

模型结构输出:

Model: "model_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_3 (InputLayer)        [(None, 224, 224, 3)]     0         
                                                                 
 block1_conv1 (Conv2D)       (None, 224, 224, 64)      1792      
                                                                 
 block1_conv2 (Conv2D)       (None, 224, 224, 64)      36928     
                                                                 
 block1_pool (MaxPooling2D)  (None, 112, 112, 64)      0         
                                                                 
 block2_conv1 (Conv2D)       (None, 112, 112, 128)     73856     
                                                                 
 block2_conv2 (Conv2D)       (None, 112, 112, 128)     147584    
                                                                 
 block2_pool (MaxPooling2D)  (None, 56, 56, 128)       0         
                                                                 
 block3_conv1 (Conv2D)       (None, 56, 56, 256)       295168    
                                                                 
 block3_conv2 (Conv2D)       (None, 56, 56, 256)       590080    
                                                                 
 block3_conv3 (Conv2D)       (None, 56, 56, 256)       590080    
                                                                 
 block3_pool (MaxPooling2D)  (None, 28, 28, 256)       0         
                                                                 
 block4_conv1 (Conv2D)       (None, 28, 28, 512)       1180160   
                                                                 
 block4_conv2 (Conv2D)       (None, 28, 28, 512)       2359808   
                                                                 
 block4_conv3 (Conv2D)       (None, 28, 28, 512)       2359808   
                                                                 
 block4_pool (MaxPooling2D)  (None, 14, 14, 512)       0         
                                                                 
 block5_conv1 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_conv2 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_conv3 (Conv2D)       (None, 14, 14, 512)       2359808   
                                                                 
 block5_pool (MaxPooling2D)  (None, 7, 7, 512)         0         
                                                                 
 flatten (Flatten)           (None, 25088)             0         
                                                                 
 fc1 (Dense)                 (None, 4096)              102764544 
                                                                 
 fc2 (Dense)                 (None, 4096)              16781312  
                                                                 
 predictions (Dense)         (None, 1000)              4097000   
                                                                 
=================================================================
Total params: 138,357,544
Trainable params: 138,357,544
Non-trainable params: 0
_________________________________________________________________

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:25:01