【发布时间】:2018-07-04 11:37:45
【问题描述】:
也许有办法摆脱 avg_pool 层?我找不到解决方案 :(
SAMPLE_SHAPE = (32,32,3)
def generate_model(sample_shape):
inp = Input(shape=sample_shape)
resnet = resnet50.ResNet50(weights="imagenet",include_top=False)
x = resnet(inp)
predictions = Dense(2, activation='softmax')(x)
m = Model(inputs=inp, outputs=predictions)
#model.add(Dense(2, activation='softmax'))
# This creates a model
#predictions = Dense(2, activation='softmax')(x)
return m
model = generate_model(SAMPLE_SHAPE)
错误:InvalidArgumentError Traceback(大多数 最近通话最后) ~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py 在 _create_c_op(graph, node_def, inputs, control_inputs) 1566 尝试: -> 1567 c_op = c_api.TF_FinishOperation(op_desc) 1568 除了errors.InvalidArgumentError as e:
InvalidArgumentError: 减去 7 导致的负维度大小 从 1 到 'resnet50_14/avg_pool/AvgPool' (op: 'AvgPool') 输入 形状:[?,1,1,2048]。
在处理上述异常的过程中,又发生了一个异常:
ValueError Traceback(最近调用 最后)在() 15 #predictions = Dense(2, activation='softmax')(x) 16 返回米 ---> 17 模型 = generate_model(SAMPLE_SHAPE)
在 generate_model(sample_shape) 7 inp = 输入(形状=样本形状) 8 resnet = resnet50.ResNet50(weights="imagenet",include_top=False) ----> 9 x = resnet(inp) 10 个预测 = Dense(2, activation='softmax')(x) 11
~\Anaconda3\lib\site-packages\keras\engine\topology.py 在 调用(自我、输入、**kwargs) 552 553 # 实际调用层,收集输出、掩码和形状。 --> 554 输出 = self.call(inputs, **kwargs) 555 output_mask = self.compute_mask(输入,previous_mask) 第556章
~\Anaconda3\lib\site-packages\keras\engine\topology.py in call(self, 输入,掩码)1988 返回 self._output_tensor_cache[cache_key] 1989 其他: -> 1990 输出张量,_,_ = self.run_internal_graph(输入,掩码)1991 年返回 输出张量 1992
~\Anaconda3\lib\site-packages\keras\engine\topology.py 在 run_internal_graph(自我、输入、掩码)2138
如果“面具”不在 kwargs 中:2139
kwargs['mask'] = 计算掩码 -> 2140 output_tensors = _to_list(layer.call(computed_tensor, **kwargs)) 2141 output_masks = _to_list(layer.compute_mask(computed_tensor, 2142
计算掩码))~\Anaconda3\lib\site-packages\keras\layers\pooling.py in call(self, 输入) 152 步=self.strides, 第153章 --> 154 data_format=self.data_format) 155返回输出 156
~\Anaconda3\lib\site-packages\keras\layers\pooling.py 在 _pooling_function(self,inputs,pool_size,strides,padding,data_format) 269 填充,数据格式): 270 输出 = K.pool2d(输入,pool_size,步幅, --> 271 填充,data_format,pool_mode='avg') 272返回输出 273
~\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py 在 pool2d(x, pool_size, strides, padding, data_format, pool_mode) 3012 x = tf.nn.max_pool(x, pool_size, strides, padding=padding) 3013
elif pool_mode == '平均': -> 3014 x = tf.nn.avg_pool(x, pool_size, strides, padding=padding) 3015 else: 3016 raise ValueError('无效的池化模式:', pool_mode)~\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py 在 avg_pool(value, ksize, strides, padding, data_format, name) 2110
填充=填充,2111 数据格式=数据格式, -> 2112 名称=名称)2113 2114~\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py 在 avg_pool(value, ksize, strides, padding, data_format, name) 73 _,_,_op = _op_def_lib._apply_op_helper( 74“平均池”,值=值,ksize=ksize,strides=strides,填充=填充, ---> 75 数据格式=数据格式,名称=名称) 76 _result = _op.outputs[:] 77 _inputs_flat = _op.inputs
~\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py 在 _apply_op_helper(self, op_type_name, name, **keywords) 第785章 第786章 --> 787 op_def=op_def) 第788章 第789章
~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py 在 create_op(self, op_type, 输入, dtypes, input_types, name, attrs, op_def、compute_shapes、compute_device) 3390
输入类型=输入类型,3391
original_op=self._default_original_op, -> 3392 op_def=op_def) 3393 3394 # 注意:形状是在启用 C API 的情况下延迟计算的。~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py 在 init(self,node_def,g,inputs,output_types,control_inputs,input_types,original_op,op_def)1732 op_def,输入, node_def.attr)1733 self._c_op = _create_c_op(self._graph, 节点定义,分组输入, -> 1734 control_input_ops) 1735 else: 1736 self._c_op = None
~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py 在 _create_c_op(graph, node_def, inputs, control_inputs) 1568 except errors.InvalidArgumentError as e: 1569 # 转换为 ValueError 为了向后兼容。 -> 1570 raise ValueError(str(e)) 1571 1572 return c_op
ValueError:由 1 减去 7 导致的负维度大小 带有输入形状的“resnet50_14/avg_pool/AvgPool”(操作:“AvgPool”): [?,1,1,2048]。
【问题讨论】:
标签: python tensorflow machine-learning keras computer-vision