AveragePooling2D无法识别dtype报错问题求助
解决AveragePooling2D使用时的张量输入错误
嘿,我一眼就揪出你代码里的问题啦!你这里踩了个很容易忽略的小细节:
- 你写的
x = base_model.outputs里,outputs是返回模型所有输出的列表(哪怕模型只有一个输出,它也会被包在列表里),而AveragePooling2D层需要接收单个张量作为输入,直接把列表传进去肯定会触发错误。
修正方法特别简单,把outputs改成单数的output就行,它会直接返回模型的单个输出张量:
from keras.models import Sequential, Model from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D, GlobalAveragePooling2D, AveragePooling2D from keras.applications.inception_v3 import InceptionV3 from keras.layers import Input import keras.backend as K import math K.clear_session() base_model = InceptionV3(weights='imagenet', include_top=False, input_tensor=Input(shape=(150, 150, 3))) x = base_model.output # 这里把outputs改成output x = AveragePooling2D(pool_size=(8, 8))(x)
额外提个小提醒:如果你的模型真的是多输出结构(比如自定义的多任务模型),那你需要从outputs列表里取出对应的单个张量再传入池化层,但InceptionV3默认是单输出结构,所以用base_model.output就完全没问题啦。
内容的提问来源于stack exchange,提问作者zot8
相关产品推荐
相关产品推荐

