TypeError: 'Var' object does not support indexing
- 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
Assessment
This issue has not been assessed yet.