apple / apple/coremltools

TypeError: 'Var' object does not support indexing

Open
#873 1 comment 2 reactions 0 assignees View on GitHub
question tf1.x
Dominant language
Python
Stars
5.4k
Forks
850
Avg merge
4d 5h
Merged PRs (30d)
10

Description

Getting this error when trying to convert to coreml using the TensorFlow frozen graph

code snippet
import coremltools as ct

```
# Convert a frozen graph from TensorFlow 1 to Core ML
mlmodel = ct.convert("frozen_inference_graph.pb",
source='tensorflow',
inputs=[ct.TensorType(shape=(1, 320, 320, 3))])
```

## System Information
- Tensorflow version: 1.15.2
- coremltools version : coremltools 4.0b3

```
Running TensorFlow Graph Passes: 100%|██████████| 6/6 [00:03<00:00, 1.76 passes/s]
Converting Frontend ==> MIL Ops: 47%|████▋ | 789/1679 [00:00<00:00, 1850.66 ops/s]
Converting Frontend ==> MIL Ops: 0%| | 0/30 [00:00.tensor'>
WARNING:root:Input ls elem type unknown. Override with .tensor'>
Converting Frontend ==> MIL Ops: 100%|██████████| 30/30 [00:00<00:00, 1494.60 ops/s]

Converting Frontend ==> MIL Ops: 100%|██████████| 9/9 [00:00<00:00, 3657.82 ops/s]

Converting Frontend ==> MIL Ops: 0%| | 0/30 [00:00.tensor'>
WARNING:root:Input ls elem type unknown. Override with .tensor'>
Converting Frontend ==> MIL Ops: 100%|██████████| 30/30 [00:00<00:00, 1595.80 ops/s]

Converting Frontend ==> MIL Ops: 100%|██████████| 9/9 [00:00<00:00, 3804.17 ops/s]
Converting Frontend ==> MIL Ops: 98%|█████████▊| 1640/1679 [00:05<00:00, 122.81 ops/s]
Converting Frontend ==> MIL Ops: 0%| | 0/378 [00:00 MIL Ops: 18%|█▊ | 69/378 [00:00<00:00, 670.66 ops/s]
Converting Frontend ==> MIL Ops: 29%|██▊ | 108/378 [00:00<00:00, 551.30 ops/s]
Converting Frontend ==> MIL Ops: 35%|███▌ | 134/378 [00:00<00:00, 408.55 ops/s]
Converting Frontend ==> MIL Ops: 52%|█████▏ | 196/378 [00:00<00:00, 389.27 ops/s]
Converting Frontend ==> MIL Ops: 98%|█████████▊| 1649/1679 [00:06<00:00, 259.47 ops/s]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in ()
2
3 # Convert a frozen graph from TensorFlow 1 to Core ML
----> 4 mlmodel = ct.convert("/EBS_volume/livesense/Coreml_conversion/model/inferences/frozen_inference_graph.pb",source='tensorflow',inputs=[ct.TensorType(shape=(1, 320, 320, 3))])

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/_converters_entry.py in convert(model, source, inputs, outputs, classifier_config, minimum_deployment_target, **kwargs)
263 outputs=outputs,
264 classifier_config=classifier_config,
--> 265 **kwargs
266 )
267

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/converter.py in _convert(model, convert_from, convert_to, converter_registry, **kwargs)
132 frontend_converter = frontend_converter_type()
133
--> 134 prog = frontend_converter(model, **kwargs)
135 common_pass(prog)
136

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/converter.py in __call__(self, *args, **kwargs)
61
62 tf1_loader = TF1Loader(*args, **kwargs)
---> 63 return tf1_loader.load()
64
65

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/load.py in load(self)
78 )
79
---> 80 program = self._program_from_tf_ssa()
81 logging.debug("program:\n{}".format(program))
82 return program

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/load.py in _program_from_tf_ssa(self)
226
227 converter = TFConverter(self._tf_ssa, **self.kwargs)
--> 228 return converter.convert()
229
230 @staticmethod

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/converter.py in convert(self)
403 for g_name in self.graph_stack[1:]:
404 self.context.add_graph(g_name, self.tfssa.functions[g_name].graph)
--> 405 self.convert_main_graph(prog, graph)
406
407 # Apply TF frontend passes on Program. These passes are different

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/converter.py in convert_main_graph(self, prog, graph)
332 for name in func_inputs.keys():
333 self.context.add(name, ssa_func.inputs[name])
--> 334 outputs = convert_graph(self.context, graph, self.outputs)
335 ssa_func.set_outputs(outputs)
336 prog.add_function("main", ssa_func)

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/convert_utils.py in convert_graph(context, graph, outputs)
179 )
180 raise NotImplementedError(msg)
--> 181 _add_op(context, node)
182
183 if len(node.outputs) > 0:

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/ops.py in While(context, node)
2200 return res
2201
-> 2202 x = mb.while_loop(_cond=cond, _body=body, loop_vars=loop_vars, name=node.name)
2203 # wraps x as tuple for get_tuple that always follow the while node.
2204 if not isinstance(x, (tuple, list)):

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/mil/ops/registry.py in add_op(cls, **kwargs)
60 @classmethod
61 def add_op(cls, **kwargs):
---> 62 return cls._add_op(op_cls, **kwargs)
63
64 setattr(Builder, op_type, add_op)

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/mil/builder.py in _add_op(cls, op_cls, **kwargs)
189 new_op = op_cls(**kwargs)
190 curr_block()._insert_op_before(new_op, before_op=before_op)
--> 191 new_op.build_nested_blocks()
192 new_op.type_value_inference()
193 if len(new_op.outputs) == 1:

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/mil/ops/defs/control_flow.py in build_nested_blocks(self)
311 v.consuming_blocks = list()
312
--> 313 block, exit_vars = self.build_block(block_inputs)
314
315 # Verify exit_vars has the same types as loop_vars

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/mil/ops/defs/control_flow.py in build_block(self, block_inputs)
280 # Body func
281 body_func = self._body.val
--> 282 exit_vars = body_func(*block.inputs)
283
284 # Cond func:

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/ops.py in body(*loop_vars)
2195 def body(*loop_vars):
2196 context.stack_func_inputs(loop_vars)
-> 2197 res = convert_graph(context, body_graph)
2198 # Done with translating the function
2199 context.unstack_func_inputs()

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/convert_utils.py in convert_graph(context, graph, outputs)
179 )
180 raise NotImplementedError(msg)
--> 181 _add_op(context, node)
182
183 if len(node.outputs) > 0:

~/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/coremltools/converters/mil/frontend/tensorflow/ops.py in Unpack(context, node)
2304 for i in range(num_splits):
2305 output_vars.append(
-> 2306 mb.squeeze(x=y[i], axes=[axis], name=node.name + ":{}".format(i))
2307 )
2308

TypeError: 'Var' object does not support indexing

```

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.