AveragePooling2D无法识别dtype

时间:2018-03-25 08:27:20

标签: python python-3.x tensorflow keras

我对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没有认识到它,因为我理解正确。谁能指出我在哪里寻找解决这个问题?

1 个答案:

答案 0 :(得分:1)

只需删除'

x = base_model.output

那是因为outputs为您提供了输出列表。因为在这种情况下你只有一个,output适合你。否则,您必须从此列表中进行选择。