gpt4 book ai didi

python - 在 resnet 模型中拟合图像时出现尺寸问题

转载 作者:行者123 更新时间:2023-11-30 09:47:07 25 4
gpt4 key购买 nike

也许有一些方法可以摆脱 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)

Error: InvalidArgumentError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1566 try: -> 1567 c_op = c_api.TF_FinishOperation(op_desc) 1568 except errors.InvalidArgumentError as e:

InvalidArgumentError: Negative dimension size caused by subtracting 7 from 1 for 'resnet50_14/avg_pool/AvgPool' (op: 'AvgPool') with input shapes: [?,1,1,2048].

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last) in () 15 #predictions = Dense(2, activation='softmax')(x) 16 return m ---> 17 model = generate_model(SAMPLE_SHAPE)

in generate_model(sample_shape) 7 inp = Input(shape=sample_shape) 8 resnet = resnet50.ResNet50(weights="imagenet",include_top=False) ----> 9 x = resnet(inp) 10 predictions = Dense(2, activation='softmax')(x) 11

~\Anaconda3\lib\site-packages\keras\engine\topology.py in call(self, inputs, **kwargs) 552 553 # Actually call the layer, collecting output(s), mask(s), and shape(s). --> 554 output = self.call(inputs, **kwargs) 555 output_mask = self.compute_mask(inputs, previous_mask) 556

~\Anaconda3\lib\site-packages\keras\engine\topology.py in call(self, inputs, mask) 1988 return self._output_tensor_cache[cache_key] 1989 else: -> 1990 output_tensors, _, _ = self.run_internal_graph(inputs, masks) 1991 return output_tensors 1992

~\Anaconda3\lib\site-packages\keras\engine\topology.py in run_internal_graph(self, inputs, masks) 2138
if 'mask' not in kwargs: 2139
kwargs['mask'] = computed_mask -> 2140 output_tensors = _to_list(layer.call(computed_tensor, **kwargs)) 2141 output_masks = _to_list(layer.compute_mask(computed_tensor, 2142
computed_mask))

~\Anaconda3\lib\site-packages\keras\layers\pooling.py in call(self, inputs) 152 strides=self.strides, 153 padding=self.padding, --> 154 data_format=self.data_format) 155 return output 156

~\Anaconda3\lib\site-packages\keras\layers\pooling.py in _pooling_function(self, inputs, pool_size, strides, padding, data_format) 269 padding, data_format): 270 output = K.pool2d(inputs, pool_size, strides, --> 271 padding, data_format, pool_mode='avg') 272 return output 273

~\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py in 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 == 'avg': -> 3014 x = tf.nn.avg_pool(x, pool_size, strides, padding=padding) 3015 else: 3016 raise ValueError('Invalid pooling mode:', pool_mode)

~\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py in avg_pool(value, ksize, strides, padding, data_format, name) 2110
padding=padding, 2111 data_format=data_format, -> 2112 name=name) 2113 2114

~\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py in avg_pool(value, ksize, strides, padding, data_format, name) 73 _, _, _op = _op_def_lib._apply_op_helper( 74 "AvgPool", value=value, ksize=ksize, strides=strides, padding=padding, ---> 75 data_format=data_format, name=name) 76 _result = _op.outputs[:] 77 _inputs_flat = _op.inputs

~\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords) 785 op = g.create_op(op_type_name, inputs, output_types, name=scope, 786 input_types=input_types, attrs=attr_protos, --> 787 op_def=op_def) 788 return output_structure, op_def.is_stateful, op 789

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device) 3390
input_types=input_types, 3391
original_op=self._default_original_op, -> 3392 op_def=op_def) 3393 3394 # Note: shapes are lazily computed with the C API enabled.

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in init(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def) 1732 op_def, inputs, node_def.attr) 1733 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs, -> 1734 control_input_ops) 1735 else: 1736 self._c_op = None

~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1568 except errors.InvalidArgumentError as e: 1569 # Convert to ValueError for backwards compatibility. -> 1570 raise ValueError(str(e)) 1571 1572 return c_op

ValueError: Negative dimension size caused by subtracting 7 from 1 for 'resnet50_14/avg_pool/AvgPool' (op: 'AvgPool') with input shapes: [?,1,1,2048].

最佳答案

您的问题/错误来自您输入的形状。您的输入形状太小。

所有预训练网络都有最小图像大小。对于 ResNet50最小值为 197。将 SAMPLE_SHAPE 增加到 197 或 ResNet50 的默认大小 224:

SAMPLE_SHAPE = (197,197,3)

SAMPLE_SHAPE = (224,224,3)

如果您的图像较小,请将其大小调整为 197 或 224

关于python - 在 resnet 模型中拟合图像时出现尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com