You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2020/02/06 01:26:15 UTC
[GitHub] [incubator-tvm] jwfromm opened a new pull request #4825:
[Frontend][ONNX] LSTM Support
jwfromm opened a new pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825
This PR adds LSTM support to the relay Onnx frontend.
Besides adding the LSTM parser itself, we encountered an issue where for some Onnx operations (like LSTMs) arguments are optional. The current method for passing arguments to converters is just to pack them into a list however as some arguments are optional the position of each input is inconsistent. Instead, we should be using a dictionary mapping input names to their value. However, changing all inputs to a dictionary would require changing all the current operators and present problems with direct Onnx to relay conversions. Our workaround here is to add the `onnx_input` class that can be accessed as a list as we previously did or with input name dictionary style lookup.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r375661042
##########
File path: python/tvm/relay/frontend/onnx.py
##########
@@ -1190,6 +1250,145 @@ def expand_shape(in_shape, shape):
return _op.broadcast_to(inputs[0], shape=tuple(shape))
+class LSTM(OnnxOpConverter):
+ """ Operator converter for LSTM.
+ """
+
+ @classmethod
+ def _activation_helper(cls, activation, alpha, beta):
+ convert_map = _get_convert_map(1)
+ attrs = {}
+ if alpha is not None:
+ attrs['alpha'] = alpha
+ if beta is not None:
+ attrs['beta'] = beta
+ return lambda x: convert_map[activation.decode("utf-8")]([x], attrs, {})
+
+ @classmethod
+ def _activation_needs_alpha(cls, activation):
+ needs_alpha = [
+ "Affine",
+ "LeakyRelu",
+ "ThresholdedRelu",
+ "ScaledTanh",
+ "HardSigmoid",
+ "Elu",
+ ]
+ return activation.decode("utf-8") in needs_alpha
+
+ @classmethod
+ def _activation_needs_beta(cls, activation):
+ needs_beta = [
+ "Affine",
+ "ScaledTanh",
+ "HardSigmoid",
+ ]
+ return activation.decode("utf-8") in needs_beta
+
+ @classmethod
+ def _impl_v7(cls, inputs, attr, params):
+ # Unpack inputs, note that if optional and not provided then value will be None.
+ X = inputs[0]
+ W = inputs[1]
Review comment:
Is there any case when the weights won’t be constant? If they’re constant, we can remove some operations from the graph and compute them here (like squeeze).
By constant, I mean we can call `infer_value` on it.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] jwfromm commented on issue #4825: [Frontend][ONNX]
LSTM Support
Posted by GitBox <gi...@apache.org>.
jwfromm commented on issue #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#issuecomment-582692382
@masahi, @soiferj, @mbrookhart can you take a look at this PR?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] masahi commented on issue #4825: [Frontend][ONNX]
LSTM Support
Posted by GitBox <gi...@apache.org>.
masahi commented on issue #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#issuecomment-582737938
looks great! Will wait for @soiferj's review.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] masahi commented on issue #4825: [Frontend][ONNX]
LSTM Support
Posted by GitBox <gi...@apache.org>.
masahi commented on issue #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#issuecomment-583201146
Thanks @jwfromm @soiferj @mbrookhart
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] masahi merged pull request #4825: [Frontend][ONNX]
LSTM Support
Posted by GitBox <gi...@apache.org>.
masahi merged pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r375661224
##########
File path: tests/python/frontend/onnx/test_forward.py
##########
@@ -1962,6 +1962,126 @@ def test_pooling():
auto_pad='SAME_UPPER')
+def verify_lstm(seq_length,
+ batch_size,
+ input_size,
+ hidden_size,
+ use_bias=False,
+ activations=None,
+ alphas=None,
+ betas=None):
+ x_np = np.random.uniform(size=(seq_length, batch_size, input_size)).astype('float32')
+ w_np = np.random.uniform(size=(1, 4 * hidden_size, input_size)).astype('float32')
+ r_np = np.random.uniform(size=(1, 4 * hidden_size, hidden_size)).astype('float32')
+ input_names = ["X", "W", "R"]
+ input_tensors = [
+ helper.make_tensor_value_info("X", TensorProto.FLOAT, list(x_np.shape)),
+ helper.make_tensor_value_info("W", TensorProto.FLOAT, list(w_np.shape)),
+ helper.make_tensor_value_info("R", TensorProto.FLOAT, list(r_np.shape))
+ ]
+ input_values = [x_np, w_np, r_np]
+ if use_bias:
+ b_np = np.random.uniform(size=(1, 8 * hidden_size)).astype('float32')
+ input_names.append("B")
+ input_tensors.append(
+ helper.make_tensor_value_info("B", TensorProto.FLOAT, [1, 8 * hidden_size]))
+ input_values.append(b_np)
+
+ Y_shape = [seq_length, 1, batch_size, hidden_size]
+ Y_h_shape = [1, batch_size, hidden_size]
+ Y_c_shape = [1, batch_size, hidden_size]
+
+ if activations is None:
+ lstm_node = helper.make_node(
+ 'LSTM', inputs=input_names, outputs=["Y", "Y_h", "Y_c"], hidden_size=hidden_size)
+ elif alphas is None:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations)
+ else:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations,
+ activation_alpha=alphas,
+ activation_beta=betas)
+
+ graph = helper.make_graph([lstm_node],
+ "lstm_test",
+ inputs=input_tensors,
+ outputs=[
+ helper.make_tensor_value_info("Y", TensorProto.FLOAT,
+ list(Y_shape)),
+ helper.make_tensor_value_info("Y_h", TensorProto.FLOAT,
+ list(Y_h_shape)),
+ helper.make_tensor_value_info("Y_c", TensorProto.FLOAT,
+ list(Y_c_shape))
+ ])
+
+ model = helper.make_model(graph, producer_name='lstm_test')
+
+ for target, ctx in ctx_list():
+ onnx_out = get_onnxruntime_output(model, input_values, 'float32')
+ tvm_out = get_tvm_output(
+ model,
+ input_values,
+ target,
+ ctx, [Y_shape, Y_h_shape, Y_c_shape],
+ output_dtype=['float32', 'float32', 'float32'])
+ for o_out, t_out in zip(onnx_out, tvm_out):
+ tvm.testing.assert_allclose(o_out, t_out, rtol=5e-3, atol=5e-3)
+
+
+def test_lstm():
Review comment:
Can you also add a test where initial c and h states are set to something other than 0?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] jwfromm commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
jwfromm commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r376092067
##########
File path: python/tvm/relay/frontend/onnx.py
##########
@@ -1190,6 +1250,145 @@ def expand_shape(in_shape, shape):
return _op.broadcast_to(inputs[0], shape=tuple(shape))
+class LSTM(OnnxOpConverter):
+ """ Operator converter for LSTM.
+ """
+
+ @classmethod
+ def _activation_helper(cls, activation, alpha, beta):
+ convert_map = _get_convert_map(1)
+ attrs = {}
+ if alpha is not None:
+ attrs['alpha'] = alpha
+ if beta is not None:
+ attrs['beta'] = beta
+ return lambda x: convert_map[activation.decode("utf-8")]([x], attrs, {})
+
+ @classmethod
+ def _activation_needs_alpha(cls, activation):
+ needs_alpha = [
+ "Affine",
+ "LeakyRelu",
+ "ThresholdedRelu",
+ "ScaledTanh",
+ "HardSigmoid",
+ "Elu",
+ ]
+ return activation.decode("utf-8") in needs_alpha
+
+ @classmethod
+ def _activation_needs_beta(cls, activation):
+ needs_beta = [
+ "Affine",
+ "ScaledTanh",
+ "HardSigmoid",
+ ]
+ return activation.decode("utf-8") in needs_beta
+
+ @classmethod
+ def _impl_v7(cls, inputs, attr, params):
+ # Unpack inputs, note that if optional and not provided then value will be None.
+ X = inputs[0]
+ W = inputs[1]
Review comment:
I think in almost all cases it'd be safe to assume weights are constant. However, the fold constant pass in relay will eliminate all operations on the weights anyway. Since treating the weights as a non-constant is slightly more flexible I prefer it.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] jwfromm commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
jwfromm commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r376137993
##########
File path: tests/python/frontend/onnx/test_forward.py
##########
@@ -1962,6 +1962,126 @@ def test_pooling():
auto_pad='SAME_UPPER')
+def verify_lstm(seq_length,
+ batch_size,
+ input_size,
+ hidden_size,
+ use_bias=False,
+ activations=None,
+ alphas=None,
+ betas=None):
+ x_np = np.random.uniform(size=(seq_length, batch_size, input_size)).astype('float32')
+ w_np = np.random.uniform(size=(1, 4 * hidden_size, input_size)).astype('float32')
+ r_np = np.random.uniform(size=(1, 4 * hidden_size, hidden_size)).astype('float32')
+ input_names = ["X", "W", "R"]
+ input_tensors = [
+ helper.make_tensor_value_info("X", TensorProto.FLOAT, list(x_np.shape)),
+ helper.make_tensor_value_info("W", TensorProto.FLOAT, list(w_np.shape)),
+ helper.make_tensor_value_info("R", TensorProto.FLOAT, list(r_np.shape))
+ ]
+ input_values = [x_np, w_np, r_np]
+ if use_bias:
+ b_np = np.random.uniform(size=(1, 8 * hidden_size)).astype('float32')
+ input_names.append("B")
+ input_tensors.append(
+ helper.make_tensor_value_info("B", TensorProto.FLOAT, [1, 8 * hidden_size]))
+ input_values.append(b_np)
+
+ Y_shape = [seq_length, 1, batch_size, hidden_size]
+ Y_h_shape = [1, batch_size, hidden_size]
+ Y_c_shape = [1, batch_size, hidden_size]
+
+ if activations is None:
+ lstm_node = helper.make_node(
+ 'LSTM', inputs=input_names, outputs=["Y", "Y_h", "Y_c"], hidden_size=hidden_size)
+ elif alphas is None:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations)
+ else:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations,
+ activation_alpha=alphas,
+ activation_beta=betas)
+
+ graph = helper.make_graph([lstm_node],
+ "lstm_test",
+ inputs=input_tensors,
+ outputs=[
+ helper.make_tensor_value_info("Y", TensorProto.FLOAT,
+ list(Y_shape)),
+ helper.make_tensor_value_info("Y_h", TensorProto.FLOAT,
+ list(Y_h_shape)),
+ helper.make_tensor_value_info("Y_c", TensorProto.FLOAT,
+ list(Y_c_shape))
+ ])
+
+ model = helper.make_model(graph, producer_name='lstm_test')
+
+ for target, ctx in ctx_list():
+ onnx_out = get_onnxruntime_output(model, input_values, 'float32')
+ tvm_out = get_tvm_output(
+ model,
+ input_values,
+ target,
+ ctx, [Y_shape, Y_h_shape, Y_c_shape],
+ output_dtype=['float32', 'float32', 'float32'])
+ for o_out, t_out in zip(onnx_out, tvm_out):
+ tvm.testing.assert_allclose(o_out, t_out, rtol=5e-3, atol=5e-3)
+
+
+def test_lstm():
Review comment:
New tests for initial states and peephole weights are added. Glad you pointed this out since both those cases had some small bugs.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r375661224
##########
File path: tests/python/frontend/onnx/test_forward.py
##########
@@ -1962,6 +1962,126 @@ def test_pooling():
auto_pad='SAME_UPPER')
+def verify_lstm(seq_length,
+ batch_size,
+ input_size,
+ hidden_size,
+ use_bias=False,
+ activations=None,
+ alphas=None,
+ betas=None):
+ x_np = np.random.uniform(size=(seq_length, batch_size, input_size)).astype('float32')
+ w_np = np.random.uniform(size=(1, 4 * hidden_size, input_size)).astype('float32')
+ r_np = np.random.uniform(size=(1, 4 * hidden_size, hidden_size)).astype('float32')
+ input_names = ["X", "W", "R"]
+ input_tensors = [
+ helper.make_tensor_value_info("X", TensorProto.FLOAT, list(x_np.shape)),
+ helper.make_tensor_value_info("W", TensorProto.FLOAT, list(w_np.shape)),
+ helper.make_tensor_value_info("R", TensorProto.FLOAT, list(r_np.shape))
+ ]
+ input_values = [x_np, w_np, r_np]
+ if use_bias:
+ b_np = np.random.uniform(size=(1, 8 * hidden_size)).astype('float32')
+ input_names.append("B")
+ input_tensors.append(
+ helper.make_tensor_value_info("B", TensorProto.FLOAT, [1, 8 * hidden_size]))
+ input_values.append(b_np)
+
+ Y_shape = [seq_length, 1, batch_size, hidden_size]
+ Y_h_shape = [1, batch_size, hidden_size]
+ Y_c_shape = [1, batch_size, hidden_size]
+
+ if activations is None:
+ lstm_node = helper.make_node(
+ 'LSTM', inputs=input_names, outputs=["Y", "Y_h", "Y_c"], hidden_size=hidden_size)
+ elif alphas is None:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations)
+ else:
+ lstm_node = helper.make_node(
+ 'LSTM',
+ inputs=input_names,
+ outputs=["Y", "Y_h", "Y_c"],
+ hidden_size=hidden_size,
+ activations=activations,
+ activation_alpha=alphas,
+ activation_beta=betas)
+
+ graph = helper.make_graph([lstm_node],
+ "lstm_test",
+ inputs=input_tensors,
+ outputs=[
+ helper.make_tensor_value_info("Y", TensorProto.FLOAT,
+ list(Y_shape)),
+ helper.make_tensor_value_info("Y_h", TensorProto.FLOAT,
+ list(Y_h_shape)),
+ helper.make_tensor_value_info("Y_c", TensorProto.FLOAT,
+ list(Y_c_shape))
+ ])
+
+ model = helper.make_model(graph, producer_name='lstm_test')
+
+ for target, ctx in ctx_list():
+ onnx_out = get_onnxruntime_output(model, input_values, 'float32')
+ tvm_out = get_tvm_output(
+ model,
+ input_values,
+ target,
+ ctx, [Y_shape, Y_h_shape, Y_c_shape],
+ output_dtype=['float32', 'float32', 'float32'])
+ for o_out, t_out in zip(onnx_out, tvm_out):
+ tvm.testing.assert_allclose(o_out, t_out, rtol=5e-3, atol=5e-3)
+
+
+def test_lstm():
Review comment:
Can you also add a test where initial c and h states are set?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r375661042
##########
File path: python/tvm/relay/frontend/onnx.py
##########
@@ -1190,6 +1250,145 @@ def expand_shape(in_shape, shape):
return _op.broadcast_to(inputs[0], shape=tuple(shape))
+class LSTM(OnnxOpConverter):
+ """ Operator converter for LSTM.
+ """
+
+ @classmethod
+ def _activation_helper(cls, activation, alpha, beta):
+ convert_map = _get_convert_map(1)
+ attrs = {}
+ if alpha is not None:
+ attrs['alpha'] = alpha
+ if beta is not None:
+ attrs['beta'] = beta
+ return lambda x: convert_map[activation.decode("utf-8")]([x], attrs, {})
+
+ @classmethod
+ def _activation_needs_alpha(cls, activation):
+ needs_alpha = [
+ "Affine",
+ "LeakyRelu",
+ "ThresholdedRelu",
+ "ScaledTanh",
+ "HardSigmoid",
+ "Elu",
+ ]
+ return activation.decode("utf-8") in needs_alpha
+
+ @classmethod
+ def _activation_needs_beta(cls, activation):
+ needs_beta = [
+ "Affine",
+ "ScaledTanh",
+ "HardSigmoid",
+ ]
+ return activation.decode("utf-8") in needs_beta
+
+ @classmethod
+ def _impl_v7(cls, inputs, attr, params):
+ # Unpack inputs, note that if optional and not provided then value will be None.
+ X = inputs[0]
+ W = inputs[1]
Review comment:
Is there any case when the weights won’t be constant? If they’re constant, we can remove some operations from the graph and compute them here (like squeeze).
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r376144976
##########
File path: python/tvm/relay/frontend/onnx.py
##########
@@ -1190,6 +1250,145 @@ def expand_shape(in_shape, shape):
return _op.broadcast_to(inputs[0], shape=tuple(shape))
+class LSTM(OnnxOpConverter):
+ """ Operator converter for LSTM.
+ """
+
+ @classmethod
+ def _activation_helper(cls, activation, alpha, beta):
+ convert_map = _get_convert_map(1)
+ attrs = {}
+ if alpha is not None:
+ attrs['alpha'] = alpha
+ if beta is not None:
+ attrs['beta'] = beta
+ return lambda x: convert_map[activation.decode("utf-8")]([x], attrs, {})
+
+ @classmethod
+ def _activation_needs_alpha(cls, activation):
+ needs_alpha = [
+ "Affine",
+ "LeakyRelu",
+ "ThresholdedRelu",
+ "ScaledTanh",
+ "HardSigmoid",
+ "Elu",
+ ]
+ return activation.decode("utf-8") in needs_alpha
+
+ @classmethod
+ def _activation_needs_beta(cls, activation):
+ needs_beta = [
+ "Affine",
+ "ScaledTanh",
+ "HardSigmoid",
+ ]
+ return activation.decode("utf-8") in needs_beta
+
+ @classmethod
+ def _impl_v7(cls, inputs, attr, params):
+ # Unpack inputs, note that if optional and not provided then value will be None.
+ X = inputs[0]
+ W = inputs[1]
Review comment:
Sounds good. Thanks a lot for the updates.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on a change in pull request
#4825: [Frontend][ONNX] LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on a change in pull request #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#discussion_r375662346
##########
File path: python/tvm/relay/frontend/onnx.py
##########
@@ -32,6 +32,55 @@
__all__ = ['from_onnx']
+class onnx_input():
Review comment:
I really like this design - very sleek.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services
[GitHub] [incubator-tvm] soiferj commented on issue #4825: [Frontend][ONNX]
LSTM Support
Posted by GitBox <gi...@apache.org>.
soiferj commented on issue #4825: [Frontend][ONNX] LSTM Support
URL: https://github.com/apache/incubator-tvm/pull/4825#issuecomment-582713458
Awesome!! I was looking at implementing this myself yesterday. I’ll take a look as soon as possible. Thanks for sending the PR!
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services