onnx-tensorflow
onnx-tensorflow copied to clipboard
ValueError: Negative dimension size caused by subtracting 3 from 2 for 'convolution_15' (op: 'Conv2D') with input shapes: [1,2,2,512], [3,3,512,512].
I use this example from https://github.com/onnx/tutorials/blob/master/tutorials/CntkOnnxExport.ipynb to export vgg19.onnx with CNTK and run in Tensorflow ,this error occurs I did run programming with GPU on jupyter noebook and I download the vgg19 model in https://www.cntk.ai/Models/Caffe_Converted/VGG19_ImageNet_Caffe.model
this is my code (export model)
import cntk as C
model_path = "/root/VGG19_ImageNet_Caffe.model"
z = C.Function.load(model_path, device=C.device.cpu())
z.save("vgg19.onnx", format=C.ModelFormat.ONNX)
Error message
/usr/local/lib/python3.6/dist-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
InvalidArgumentErrorTraceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
1566 try:
-> 1567 c_op = c_api.TF_FinishOperation(op_desc)
1568 except errors.InvalidArgumentError as e:
InvalidArgumentError: Negative dimension size caused by subtracting 3 from 2 for 'convolution_15' (op: 'Conv2D') with input shapes: [1,2,2,512], [3,3,512,512].
During handling of the above exception, another exception occurred:
ValueErrorTraceback (most recent call last)
<ipython-input-1-c9e538340097> in <module>()
2 from onnx_tf.backend import prepare
3 model = onnx.load('vgg19.onnx')
----> 4 tf_rep = prepare(model)
/AFS/onnx-tensorflow/onnx_tf/backend.py in prepare(cls, model, device, **kwargs)
343
344 predict_net = (cls.onnx_graph_to_tensorflow_net(
--> 345 model.graph, opset=model.opset_import[0].version))
346
347 return TensorflowRep(predict_net)
/AFS/onnx-tensorflow/onnx_tf/backend.py in onnx_graph_to_tensorflow_net(cls, graph_def, opset)
319
320 output_ops = cls._onnx_node_to_tensorflow_op(
--> 321 node, tensor_dict, opset=opset)
322 curr_node_output_map = list(zip(node.outputs, output_ops))
323 tensor_dict = dict(list(tensor_dict.items()) + curr_node_output_map)
/AFS/onnx-tensorflow/onnx_tf/backend.py in _onnx_node_to_tensorflow_op(cls, node, input_dict, opset)
398 if hasattr(backend, handler_name):
399 method_to_call = getattr(backend, handler_name)
--> 400 return method_to_call(node, input_dict)
401 elif op_name_lowered in ONNX_OP_TO_TF_OP.keys():
402 return backend.handle_trivial(node, input_dict)
/AFS/onnx-tensorflow/onnx_tf/backends/backend_v1.py in handle_conv(cls, node, input_dict)
472 @classmethod
473 def handle_conv(cls, node, input_dict):
--> 474 return cls._conv(node, input_dict)
475
476 @classmethod
/AFS/onnx-tensorflow/onnx_tf/backends/backend_v1.py in _conv(cls, node, input_dict, transpose)
442 dilation_rate=dilations,
443 data_format=compute_format)
--> 444 for (x, weight) in zip(xs, weight_groups)
445 ]
446
/AFS/onnx-tensorflow/onnx_tf/backends/backend_v1.py in <listcomp>(.0)
442 dilation_rate=dilations,
443 data_format=compute_format)
--> 444 for (x, weight) in zip(xs, weight_groups)
445 ]
446
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/nn_ops.py in convolution(input, filter, padding, strides, dilation_rate, name, data_format)
778 name=name,
779 data_format=data_format)
--> 780 return op(input, filter)
781
782
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/nn_ops.py in __call__(self, inp, filter)
866
867 def __call__(self, inp, filter): # pylint: disable=redefined-builtin
--> 868 return self.conv_op(inp, filter)
869
870
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/nn_ops.py in __call__(self, inp, filter)
518
519 def __call__(self, inp, filter): # pylint: disable=redefined-builtin
--> 520 return self.call(inp, filter)
521
522
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/nn_ops.py in __call__(self, inp, filter)
202 padding=self.padding,
203 data_format=self.data_format,
--> 204 name=self.name)
205
206
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, data_format, dilations, name)
954 "Conv2D", input=input, filter=filter, strides=strides,
955 padding=padding, use_cudnn_on_gpu=use_cudnn_on_gpu,
--> 956 data_format=data_format, dilations=dilations, name=name)
957 _result = _op.outputs[:]
958 _inputs_flat = _op.inputs
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
785 op = g.create_op(op_type_name, inputs, output_types, name=scope,
786 input_types=input_types, attrs=attr_protos,
--> 787 op_def=op_def)
788 return output_structure, op_def.is_stateful, op
789
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device)
3390 input_types=input_types,
3391 original_op=self._default_original_op,
-> 3392 op_def=op_def)
3393
3394 # Note: shapes are lazily computed with the C API enabled.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def)
1732 op_def, inputs, node_def.attr)
1733 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1734 control_input_ops)
1735 else:
1736 self._c_op = None
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in _create_c_op(graph, node_def, inputs, control_inputs)
1568 except errors.InvalidArgumentError as e:
1569 # Convert to ValueError for backwards compatibility.
-> 1570 raise ValueError(str(e))
1571
1572 return c_op
ValueError: Negative dimension size caused by subtracting 3 from 2 for 'convolution_15' (op: 'Conv2D') with input shapes: [1,2,2,512], [3,3,512,512].
this is my code (import with Tensorflow)
import onnx
from onnx_tf.backend import prepare
model = onnx.load('vgg19.onnx')
tf_rep = prepare(model)
my Python Environment
python 3.6.3
(1)onnx
apt-get install protobuf-compiler libprotoc-dev
git clone --recursive https://github.com/onnx/onnx.git
export ONNX_ML=1
apt-get install cmake gcc g++
apt-get install protobuf-compiler libprotoc-dev
pip install -e onnx/
python -c "import onnx"
(2)onnx_tensorflow
git clone https://github.com/onnx/onnx-tensorflow.git
cd onnx-tensorflow
pip install -e .
Could you please advice how to solve out this error Thank you