summary() 函数在 cnn 中不起作用(ValueError:不支持未定义的形状。)

问题描述 投票:0回答:1

我正在尝试建立一个分类网络,用于从 cifar10 数据集中识别图片。 当我尝试使用summary()函数时,我不断收到此错误。

ValueError                                Traceback (most recent call last)
Cell In[267], line 4
      1 #base_model.summary()
      2 #top_model.summary()
      3 #print(base_model.output_shape)
----> 4 model2.summary()

File c:\Users\noahc\anaconda3\Lib\site-packages\keras\src\utils\traceback_utils.py:122, in filter_traceback.<locals>.error_handler(*args, **kwargs)
    119     filtered_tb = _process_traceback_frames(e.__traceback__)
    120     # To get the full stack trace, call:
    121     # `keras.config.disable_traceback_filtering()`
--> 122     raise e.with_traceback(filtered_tb) from None
    123 finally:
    124     del filtered_tb

File c:\Users\noahc\anaconda3\Lib\site-packages\optree\ops.py:747, in tree_map(func, tree, is_leaf, none_is_leaf, namespace, *rests)
    745 leaves, treespec = _C.flatten(tree, is_leaf, none_is_leaf, namespace)
    746 flat_args = [leaves] + [treespec.flatten_up_to(r) for r in rests]
--> 747 return treespec.unflatten(map(func, *flat_args))

ValueError: Undefined shapes are not supported.

这是代码...

import tensorflow as tf
from keras.applications import VGG16

base_model = VGG16(weights='imagenet', include_top=False, input_shape=(32, 32, 3))

top_model = tf.keras.Sequential([
    layers.Flatten(input_shape=base_model.output_shape[1:]),
    layers.Dense(10, activation='softmax')
])

for layer in base_model.layers[:10]:
    layer.trainable = False

model2 = tf.keras.models.Sequential([
    base_model,
    top_model
])

model2.summary() # Error Occurs Here

我已经对基础模型和顶级模型做了总结,效果很好。但是当我测试 model2 时出现错误。不知道为什么。不确定“未定义”形状意味着什么。不知道还能尝试什么。当我只使用 vgg16 的前 11 或 15 层时,总结就起作用了。我听说这可能是 python 版本本身的问题,但我不知道...

tensorflow machine-learning keras deep-learning vgg-net
1个回答
0
投票

VGG16模型最初是为尺寸为(224,224,3)的输入图像设计的。使用更小的输入大小(如 (32, 32, 3))可能会导致兼容性问题,因为 VGG16 期望其卷积层和池化层具有特定的尺寸。

© www.soinside.com 2019 - 2024. All rights reserved.