apple / apple/coremltools

Converter from PB-model can`t infer input size

Open
#720 0 comments 0 reactions 0 assignees View on GitHub
bug tf1.x
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

## 🐞Describe the bug

I have a model in pb format (frozen graph, attached in binary+text forms). When converting it to coreml i get the following error:

ValueError: Input 0 to Conv2D node model_1/model/Conv1/Conv2D is not a 4D tensor

Model originally created with tensorflow-2.0, which then converted into frozen graph and saved as PB. Printing shapes from model creation about model_1/model/Conv1/Conv2D inputs gives perfect 4-dimension shape. Looks like problem arise after using ZeroPadding2D layer
Piece of code, used for described part of model:

```
first_block_filters = _make_divisible(32 * alpha, 8)
x = layers.ZeroPadding2D( # DBG
padding=imagenet_utils.correct_pad(img_input, 3),
name='Conv1_pad_x2')(img_input)
print("ZeroPadding2D: pad_x2 postshape", x.shape, "img_input", img_input.shape)
x = layers.Conv2D(
first_block_filters,
kernel_size=3,
strides=(2, 2),
padding='valid',
use_bias=False,
name='Conv1')(
x)
```

Output during model construction:
ZeroPadding2D: pad_x2 postshape (None, 1025, 33, 1) img_input (None, 1024, 32, 1)

## Trace
```
ERROR:root:[TypeInference] Failed to infer type of model_1/model/Conv1/Conv2D:Conv2D
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 171, in visit
ret = visitor(node)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 735, in visit_Conv2D
'Input {} to {} node {} is not a 4D tensor'.format(idx, node.op, node.name))
ValueError: Input 0 to Conv2D node model_1/model/Conv1/Conv2D is not a 4D tensor
Traceback (most recent call last):
File "./dnn10_conv.py", line 546, in
main(sys.argv)
File "./dnn10_conv.py", line 542, in main
convertToCoreML()
File "./dnn10_conv.py", line 508, in convertToCoreML
minimum_ios_deployment_target='13') # minimum_ios_deployment_target='13' -> CoreML3
File "/usr/local/lib/python3.7/site-packages/tfcoreml/_tf_coreml_converter.py", line 691, in convert
custom_shape_functions=custom_shape_functions)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/tensorflow/_tf_converter.py", line 177, in convert
ssa = frontend_load(filename, resume_on_errors=False, inputs=inputs, outputs=outputs, **kwargs)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/tensorflow/load.py", line 76, in load
common_pass(ssa, resume_on_errors)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/common_pass.py", line 32, in common_pass
p(ssa)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 2835, in type_inference_pass
type_inference_pass_impl(nnssa)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 2778, in type_inference_pass_impl
TypeInferenceVisitor(nnssa.functions[k].graph, nnssa).visit_all()
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 185, in visit_all
self.visit(self.gdict[i])
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 171, in visit
ret = visitor(node)
File "/usr/local/lib/python3.7/site-packages/coremltools/converters/nnssa/frontend/graph_pass/type_inference.py", line 735, in visit_Conv2D
'Input {} to {} node {} is not a 4D tensor'.format(idx, node.op, node.name))
ValueError: Input 0 to Conv2D node model_1/model/Conv1/Conv2D is not a 4D tensor
```

[coreml.pb.zip](https://github.com/apple/coremltools/files/4716912/coreml.pb.zip)
[coreml.pb_txt.zip](https://github.com/apple/coremltools/files/4716913/coreml.pb_txt.zip)

## System environment (please complete the following information):
- coremltools version: 3.4
- OS: MacOS 10.15.5
- python version: 3.7.4

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.