我对AveragePooling2D有疑问:
from keras.models import Sequential, Model
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D, ZeroPadding2D, GlobalAveragePooling2D, AveragePooling2D
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.outputs
x = AveragePooling2D(pool_size=(8, 8))(x)
我收到错误:
AttributeError Traceback(最近一次调用 最后)in()
〜/ anaconda3 / lib / python3.6 / site-packages / keras / engine / topology.py in 致电(自我,输入,** kwargs) 617 618#实际上调用图层,收集输出,蒙版和形状。 - > 619输出= self.call(输入,** kwargs) 620 output_mask = self.compute_mask(inputs,previous_mask) 621
〜/ anaconda3 / lib / python3.6 / site-packages / keras / layers / pooling.py in 呼叫(自我,输入) 156 strides = self.strides, 157 padding = self.padding, - > 158 data_format = self.data_format) 159返回输出 160
〜/ anaconda3 / lib / python3.6 / site-packages / keras / layers / pooling.py in _pooling_function(self,inputs,pool_size,strides,padding,data_format) 273 padding,data_format): 274输出= K.pool2d(输入,pool_size,步幅, - > 275填充,data_format,pool_mode =' avg') 276返回输出 277
〜/ anaconda3 / LIB / python3.6 /站点包/ keras /后端/ tensorflow_backend.py 在pool2d(x,pool_size,strides,padding,data_format,pool_mode)中 3643引发ValueError('未知data_format:' + str(data_format))3644 - > 3645 x,tf_data_format = _preprocess_conv2d_input(x,data_format)3646 padding = _preprocess_padding(padding)
3647如果tf_data_format ==' NHWC':〜/ anaconda3 / LIB / python3.6 /站点包/ keras /后端/ tensorflow_backend.py in _preprocess_conv2d_input(x,data_format)3202张量。 3203""" - > 3204如果dtype(x)==' float64':3205 x = tf.cast(x,' float32')3206 tf_data_format =' NHWC'
〜/ anaconda3 / LIB / python3.6 /站点包/ keras /后端/ tensorflow_backend.py 在dtype(x) 640``` 641""" - > 642返回x.dtype.base_dtype.name 643 644
AttributeError:' list'对象没有属性' dtype'
但是如果我打印(x)这就是我得到的结果:
tf.Tensor' mixed10 / concat:0' shape =(?,3,3,2048)dtype = float32
所以基本上" x"有一个dtype是float32但是AveragePooling2D没有认识到它,因为我理解正确。谁能指出我在哪里寻找解决这个问题?
答案 0 :(得分:1)
只需删除'
:x = base_model.output
那是因为outputs
为您提供了输出列表。因为在这种情况下你只有一个,output
适合你。否则,您必须从此列表中进行选择。