Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

While predicting on trained model I've getting an Image shape error

I am new to the world of deep learning.

I use the deeptrack library (that also using tensorflow) to train a model dealing with cell counting using UNet.

This is the code defines the UNet model using deeptrack (dt) library:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

model = dt.models.unet(
    (256, 256, 1), 
    conv_layers_dimensions=[8, 16, 32],
    base_conv_layers_dimensions=[32, 32], 
    loss=dt.losses.weighted_crossentropy((10, 1)),
    output_activation="sigmoid"
)

And this is the summary of the model I trained:

Model: "model_2"

 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_3 (InputLayer)           [(None, 256, 256, 1  0           []                               
                                )]                                                                
                                                                                                  
 conv2d_22 (Conv2D)             (None, 256, 256, 8)  80          ['input_3[0][0]']                
                                                                                                  
 activation_20 (Activation)     (None, 256, 256, 8)  0           ['conv2d_22[0][0]']              
                                                                                                  
 max_pooling2d_6 (MaxPooling2D)  (None, 128, 128, 8)  0          ['activation_20[0][0]']          
                                                                                                  
 ... 
 # (not relevant for the question) 
 ...                                                         
                                                                                                  
 conv2d_32 (Conv2D)             (None, 256, 256, 1)  145         ['activation_29[0][0]']          
                                                                                                  
==================================================================================================
Total params: 58,977
Trainable params: 58,977
Non-trainable params: 0

And when I try to make a prediction with the model I trained, with a 256X256 image (both color and grayscale) – I encounter the following error:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-78c33765d4d3> in <module>()
    138     model = tf.keras.models.load_model('model7.h5', compile=False)
--> 139     prediction = model.predict([img])
    140 
    141     plt.figure(figsize=(15, 5))

1 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in autograph_handler(*args, **kwargs)
   1145           except Exception as e:  # pylint:disable=broad-except
   1146             if hasattr(e, "ag_error_metadata"):
-> 1147               raise e.ag_error_metadata.to_exception(e)
   1148             else:
   1149               raise

ValueError: in user code:

    File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1801, in predict_function  *
        return step_function(self, iterator)
    File "/usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py", line 264, in assert_input_compatibility
        raise ValueError(f'Input {input_index} of layer "{layer_name}" is '

    ValueError: Input 0 of layer "model" is incompatible with the layer: expected shape=(None, 256, 256, 1), found shape=(32, 256, 3)

I couldn’t understand why the error message shows image dimensions of 32X256 when in practice it is 256X256?

I would like to know how I can overcome the above problem.

Thank you!

>Solution :

You need to add a batch dimension to your image, try:

prediction = model.predict(img[None, ...])
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading