apple / apple/coremltools

NotImplementedError: Only a single concrete function is supported

Open
#1,794 1 comment 0 reactions 0 assignees View on GitHub
bug tf2.x / tf.keras triaged
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

## 🐞Describing the bug

I try to convert TensorFlow model and conversion throws error `NotImplementedError: Only a single concrete function is supported`. Similar report https://github.com/apple/coremltools/issues/1057#issuecomment-1074516079

## Stack Trace
```
Traceback (most recent call last):
File "/Users/marcinkrzyzanowski/Library/Application Support/CodeRunner/Unsaved/Untitled 2.py", line 11, in
mlmodel = ct.convert(model="/Users/marcinkrzyzanowski/Devel/guesslang/guesslang/data/model/", source="tensorflow")
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/_converters_entry.py", line 444, in convert
mlmodel = mil_convert(
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 187, in mil_convert
return _mil_convert(model, convert_from, convert_to, ConverterRegistry, MLModel, compute_units, **kwargs)
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 211, in _mil_convert
proto, mil_program = mil_convert_to_proto(
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 281, in mil_convert_to_proto
prog = frontend_converter(model, **kwargs)
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/converter.py", line 99, in __call__
return tf2_loader.load()
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/frontend/tensorflow/load.py", line 61, in load
self._graph_def = self._graph_def_from_model(output_names)
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/frontend/tensorflow2/load.py", line 133, in _graph_def_from_model
cfs, graph_def = self._get_concrete_functions_and_graph_def()
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/frontend/tensorflow2/load.py", line 127, in _get_concrete_functions_and_graph_def
graph_def = self._graph_def_from_concrete_fn(cfs)
File "/Users/marcinkrzyzanowski/.asdf/installs/python/3.10.10/lib/python3.10/site-packages/coremltools/converters/mil/frontend/tensorflow2/load.py", line 325, in _graph_def_from_concrete_fn
raise NotImplementedError("Only a single concrete function is supported.")
NotImplementedError: Only a single concrete function is supported.

```

## To Reproduce

Download model https://github.com/yoeo/guesslang/tree/master/guesslang/data/model

```
#!/usr/bin/env python3

import coremltools as ct
import tensorflow as tf

mlmodel = ct.convert(model="/guesslang/guesslang/data/model/", source="tensorflow")
```

## System environment (please complete the following information):
- coremltools version: 6.2
- macOS: 13.2.1 (22D68)

tensorflow-macos 2.11.0
tensorflow-metal 0.7.1

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with the guesslang model directory and the TensorFlow conversion call from the issue. Read coremltools/converters/mil/frontend/tensorflow2/load.py, especially _get_concrete_functions_and_graph_def and _graph_def_from_concrete_fn. Done means the reported model converts without raising the single-concrete-function NotImplementedError, with appropriate coverage added if the project’s existing tests identify a location.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, tensorflow
Domain
machine-learning, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.