MrGiovanni / UNetPlusPlus

[IEEE TMI] Official Implementation for UNet++
Other
2.26k stars 538 forks source link

Error while creating Xnet model object. #23

Closed jayantp07 closed 5 years ago

jayantp07 commented 5 years ago

My input shape is (256 X 256 X 1). When I create a Xnet model object, I get this error. I also changed the input_shape in model.py of Xnet from (None, None, 3) to (256, 256, 1):

ValueError: Dimension 0 in both shapes must be equal, but are 1 and 3. Shapes are [1] and [3]. for 'Assign' (op: 'Assign') with input shapes: [1], [3].

Complete Error:

InvalidArgumentError Traceback (most recent call last) ~/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1658 try: -> 1659 c_op = c_api.TF_FinishOperation(op_desc) 1660 except errors.InvalidArgumentError as e:

InvalidArgumentError: Dimension 0 in both shapes must be equal, but are 1 and 3. Shapes are [1] and [3]. for 'Assign' (op: 'Assign') with input shapes: [1], [3].

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)

in ----> 1 model = Xnet(backbone_name='resnet50', encoder_weights='imagenet', decoder_block_type='transpose') ~/research/segmentation/segmentation_models/xnet/model.py in Xnet(backbone_name, input_shape, input_tensor, encoder_weights, freeze_encoder, skip_connections, decoder_block_type, decoder_filters, decoder_use_batchnorm, n_upsample_blocks, upsample_rates, classes, activation) 84 input_tensor=input_tensor, 85 weights=encoder_weights, ---> 86 include_top=False) 87 88 if skip_connections == 'default': ~/research/segmentation/segmentation_models/backbones/backbones.py in get_backbone(name, *args, **kwargs) 30 31 def get_backbone(name, *args, **kwargs): ---> 32 return backbones[name](*args, **kwargs) ~/research/segmentation/segmentation_models/backbones/classification_models/classification_models/resnet/models.py in ResNet50(input_shape, input_tensor, weights, classes, include_top) 41 42 if weights: ---> 43 load_model_weights(weights_collection, model, weights, classes, include_top) 44 return model 45 ~/research/segmentation/segmentation_models/backbones/classification_models/classification_models/utils.py in load_model_weights(weights_collection, model, dataset, classes, include_top) 24 md5_hash=weights['md5']) 25 ---> 26 model.load_weights(weights_path) 27 28 else: ~/.local/lib/python3.6/site-packages/keras/engine/network.py in load_weights(self, filepath, by_name, skip_mismatch, reshape) 1164 else: 1165 saving.load_weights_from_hdf5_group( -> 1166 f, self.layers, reshape=reshape) 1167 1168 def _updated_config(self): ~/.local/lib/python3.6/site-packages/keras/engine/saving.py in load_weights_from_hdf5_group(f, layers, reshape) 1056 ' elements.') 1057 weight_value_tuples += zip(symbolic_weights, weight_values) -> 1058 K.batch_set_value(weight_value_tuples) 1059 1060 ~/.local/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py in batch_set_value(tuples) 2463 assign_placeholder = tf.placeholder(tf_dtype, 2464 shape=value.shape) -> 2465 assign_op = x.assign(assign_placeholder) 2466 x._assign_placeholder = assign_placeholder 2467 x._assign_op = assign_op ~/.local/lib/python3.6/site-packages/tensorflow/python/ops/variables.py in assign(self, value, use_locking, name, read_value) 1760 """ 1761 assign = state_ops.assign(self._variable, value, use_locking=use_locking, -> 1762 name=name) 1763 if read_value: 1764 return assign ~/.local/lib/python3.6/site-packages/tensorflow/python/ops/state_ops.py in assign(ref, value, validate_shape, use_locking, name) 221 return gen_state_ops.assign( 222 ref, value, use_locking=use_locking, name=name, --> 223 validate_shape=validate_shape) 224 return ref.assign(value, name=name) 225 ~/.local/lib/python3.6/site-packages/tensorflow/python/ops/gen_state_ops.py in assign(ref, value, validate_shape, use_locking, name) 62 _, _, _op = _op_def_lib._apply_op_helper( 63 "Assign", ref=ref, value=value, validate_shape=validate_shape, ---> 64 use_locking=use_locking, name=name) 65 _result = _op.outputs[:] 66 _inputs_flat = _op.inputs ~/.local/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords) 786 op = g.create_op(op_type_name, inputs, output_types, name=scope, 787 input_types=input_types, attrs=attr_protos, --> 788 op_def=op_def) 789 return output_structure, op_def.is_stateful, op 790 ~/.local/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py in new_func(*args, **kwargs) 505 'in a future version' if date is None else ('after %s' % date), 506 instructions) --> 507 return func(*args, **kwargs) 508 509 doc = _add_deprecated_arg_notice_to_docstring( ~/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in create_op(***failed resolving arguments***) 3298 input_types=input_types, 3299 original_op=self._default_original_op, -> 3300 op_def=op_def) 3301 self._create_op_helper(ret, compute_device=compute_device) 3302 return ret ~/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def) 1821 op_def, inputs, node_def.attr) 1822 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs, -> 1823 control_input_ops) 1824 1825 # Initialize self._outputs. ~/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1660 except errors.InvalidArgumentError as e: 1661 # Convert to ValueError for backwards compatibility. -> 1662 raise ValueError(str(e)) 1663 1664 return c_op ValueError: Dimension 0 in both shapes must be equal, but are 1 and 3. Shapes are [1] and [3]. for 'Assign' (op: 'Assign') with input shapes: [1], [3].
JonnoFTW commented 5 years ago

I have the same error, could you resolve this?

Edit: change your images to be 3 channels RGB (resnet and the other networks all expect 3 channels and not a single channel).