(x),
+
+ where alpha = 1/6 and beta = 0.5, is applied to the tensor elementwise.
+
+ '
+ arguments:
+ - X
+ expression_string: onnx_ops.hardswish(X)
onnx::LessOrEqual:
description: '
@@ -442,6 +457,46 @@ onnx::BitShift:
- X
- Y
expression_string: onnx_ops.bitshift(X, Y, direction)
+onnx::Trilu:
+ description: '
+
+ Given a 2-D matrix or batches of 2-D matrices, returns the upper or lower
+ triangular part of the tensor(s).
+
+ The attribute "upper" determines whether the upper or lower part is retained.
+ If set to true,
+
+ the upper triangular matrix is retained. Lower triangular matrix is retained
+ otherwise.
+
+ Default value for the "upper" attribute is true.
+
+ Trilu takes one input tensor of shape [*, N, M], where * is zero or more batch
+ dimensions. The upper triangular part consists
+
+ of the elements on and above the given diagonal (k). The lower triangular
+ part consists of elements on and below the diagonal.
+
+ All other elements in the matrix are set to zero.
+
+ If k = 0, the triangular part on and above/below the main diagonal is retained.
+
+ If upper is set to true, a positive k retains the upper triangular matrix
+ excluding the main diagonal and (k-1) diagonals above it.
+
+ A negative k value retains the main diagonal and |k| diagonals below it.
+
+ If upper is set to false, a positive k retains the lower triangular matrix
+ including the main diagonal and k diagonals above it.
+
+ A negative k value excludes the main diagonal and (|k|-1) diagonals below
+ it.
+
+ '
+ arguments:
+ - input
+ - k
+ expression_string: onnx_ops.trilu(input, k, upper)
onnx::RoiAlign:
description: '
@@ -1354,6 +1409,10 @@ onnx::Sub:
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**;
for more details please check [the doc](Broadcasting.md).
+
+ (Opset 14 change): Extend supported types to include uint8, int8, uint16,
+ and int16.
+
'
arguments:
- A
@@ -1738,6 +1797,10 @@ onnx::Mul:
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**;
for more details please check [the doc](Broadcasting.md).
+
+ (Opset 14 change): Extend supported types to include uint8, int8, uint16,
+ and int16.
+
'
arguments:
- A
@@ -1854,7 +1917,7 @@ onnx::RNN:
- sequence_lens
- initial_h
expression_string: onnx_ops.rnn(X, W, R, B, sequence_lens, initial_h, activation_alpha,
- activation_beta, activations, clip, direction, hidden_size)
+ activation_beta, activations, clip, direction, hidden_size, layout)
onnx::Pad:
description: "\nGiven a tensor containing the data to be padded (`data`), a tensor\
\ containing the number of start and end pad values for axis (`pads`), (optionally)\
@@ -2006,11 +2069,14 @@ onnx::Reshape:
could also be 0, in which case the actual dimension value is unchanged (i.e.
taken
- from the input tensor).'
+ from the input tensor). If ''allowzero'' is set, and the new shape includes
+ 0, the
+
+ dimension will be set explicitly to zero (i.e. not taken from input tensor)'
arguments:
- data
- shape
- expression_string: onnx_ops.reshape(data, shape)
+ expression_string: onnx_ops.reshape(data, shape, allowzero)
onnx::ReduceL2:
description: '
@@ -2226,17 +2292,69 @@ onnx::BatchNormalization:
https://arxiv.org/abs/1502.03167. Depending on the mode it is being run,
- there are multiple cases for the number of outputs, which we list below:
+ There are five required inputs ''X'', ''scale'', ''B'', ''input_mean'' and
+
+ ''input_var''.
+
+ Note that ''input_mean'' and ''input_var'' are expected to be the estimated
+
+ statistics in inference mode (training_mode=False, default),
+ and the running statistics in training mode (training_mode=True).
- Output case #1: Y, mean, var, saved_mean, saved_var (training mode)
+ There are multiple cases for the number of outputs, which we list below:
- Output case #2: Y (test mode)
+
+ Output case #1: Y, running_mean, running_var (training_mode=True)
+
+ Output case #2: Y (training_mode=False)
+
+
+ When training_mode=False, extra outputs are invalid.
+
+ The outputs are updated as follows when training_mode=True:
+
+ ```
+
+ running_mean = input_mean * momentum + current_mean * (1 - momentum)
+
+ running_var = input_var * momentum + current_var * (1 - momentum)
+
+
+ Y = (X - current_mean) / sqrt(current_var + epsilon) * scale + B
+
+
+ where:
+
+
+ current_mean = ReduceMean(X, axis=all_except_channel_index)
+
+ current_var = ReduceVar(X, axis=all_except_channel_index)
+
+
+ Notice that ReduceVar refers to the population variance, and it equals to
+
+ sum(sqrd(x_i - x_avg)) / N
+
+ where N is the population size (this formula does not use sample size N -
+ 1).
+
+
+ ```
+
+
+ When training_mode=False:
+
+ ```
+
+ Y = (X - input_mean) / sqrt(input_var + epsilon) * scale + B
+
+ ```
For previous (depreciated) non-spatial cases, implementors are suggested
- to flatten the input shape to (N x C*D1*D2 ..*Dn) before a BatchNormalization
+ to flatten the input shape to (N x C * D1 * D2 * ... * Dn) before a BatchNormalization
Op.
This operator has **optional** inputs/outputs. See [the doc](IR.md) for more
@@ -2250,10 +2368,10 @@ onnx::BatchNormalization:
- X
- scale
- B
- - mean
- - var
- expression_string: onnx_ops.batchnormalization(X, scale, B, mean, var, epsilon,
- momentum)
+ - input_mean
+ - input_var
+ expression_string: onnx_ops.batchnormalization(X, scale, B, input_mean, input_var,
+ epsilon, momentum, training_mode)
onnx::Cosh:
description: '
@@ -2375,7 +2493,7 @@ onnx::LSTM:
- P
expression_string: onnx_ops.lstm(X, W, R, B, sequence_lens, initial_h, initial_c,
P, activation_alpha, activation_beta, activations, clip, direction, hidden_size,
- input_forget)
+ input_forget, layout)
onnx::Unsqueeze:
description: "\nInsert single-dimensional entries to the shape of an input tensor\
\ (`data`).\nTakes one required input `axes` - which contains a list of dimension\
@@ -2720,7 +2838,7 @@ onnx::GRU:
- sequence_lens
- initial_h
expression_string: onnx_ops.gru(X, W, R, B, sequence_lens, initial_h, activation_alpha,
- activation_beta, activations, clip, direction, hidden_size, linear_before_reset)
+ activation_beta, activations, clip, direction, hidden_size, layout, linear_before_reset)
onnx::Resize:
description: "\nResize the input tensor. In general, it calculates every value\
\ in the output tensor as a weighted average of neighborhood (a.k.a. sampling\
@@ -2861,6 +2979,10 @@ onnx::Add:
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**;
for more details please check [the doc](Broadcasting.md).
+
+ (Opset 14 change): Extend supported types to include uint8, int8, uint16,
+ and int16.
+
'
arguments:
- A
@@ -2979,6 +3101,10 @@ onnx::Div:
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**;
for more details please check [the doc](Broadcasting.md).
+
+ (Opset 14 change): Extend supported types to include uint8, int8, uint16,
+ and int16.
+
'
arguments:
- A
diff --git a/docs/sphinx/source/api/MDF_function_specifications.md b/docs/sphinx/source/api/MDF_function_specifications.md
index 4867d67e..5fec6ecb 100644
--- a/docs/sphinx/source/api/MDF_function_specifications.md
+++ b/docs/sphinx/source/api/MDF_function_specifications.md
@@ -2,7 +2,7 @@
**Note: the ModECI MDF specification is still in development! Subject to change without (much) notice.** See [here](https://github.com/ModECI/MDF/issues?q=is%3Aissue+is%3Aopen+label%3Aspecification) for ongoing discussions.
These functions are defined in https://github.com/ModECI/MDF/blob/main/src/modeci_mdf/standard_functions.py
## All functions:
- | MatMul | Relu | change_goal | check_termination | conflict_resolution_function | cos | cosh | exponential | linear | logistic | onnx::Abs | onnx::Acos | onnx::Acosh | onnx::Add | onnx::And | onnx::ArgMax | onnx::ArgMin | onnx::Asin | onnx::Asinh | onnx::Atan | onnx::Atanh | onnx::AveragePool | onnx::BatchNormalization | onnx::BitShift | onnx::Cast | onnx::Ceil | onnx::Celu | onnx::Clip | onnx::Compress | onnx::Concat | onnx::ConcatFromSequence | onnx::Constant | onnx::ConstantOfShape | onnx::Conv | onnx::ConvInteger | onnx::ConvTranspose | onnx::Cos | onnx::Cosh | onnx::CumSum | onnx::DepthToSpace | onnx::DequantizeLinear | onnx::Det | onnx::Div | onnx::Dropout | onnx::DynamicQuantizeLinear | onnx::Einsum | onnx::Elu | onnx::Equal | onnx::Erf | onnx::Exp | onnx::Expand | onnx::EyeLike | onnx::Flatten | onnx::Floor | onnx::GRU | onnx::Gather | onnx::GatherElements | onnx::GatherND | onnx::Gemm | onnx::GlobalAveragePool | onnx::GlobalLpPool | onnx::GlobalMaxPool | onnx::Greater | onnx::GreaterOrEqual | onnx::HardSigmoid | onnx::Hardmax | onnx::Identity | onnx::If | onnx::InstanceNormalization | onnx::IsInf | onnx::IsNaN | onnx::LRN | onnx::LSTM | onnx::LeakyRelu | onnx::Less | onnx::LessOrEqual | onnx::Log | onnx::LogSoftmax | onnx::Loop | onnx::LpNormalization | onnx::LpPool | onnx::MatMul | onnx::MatMulInteger | onnx::Max | onnx::MaxPool | onnx::MaxRoiPool | onnx::MaxUnpool | onnx::Mean | onnx::MeanVarianceNormalization | onnx::Min | onnx::Mod | onnx::Mul | onnx::Multinomial | onnx::Neg | onnx::NegativeLogLikelihoodLoss | onnx::NonMaxSuppression | onnx::NonZero | onnx::Not | onnx::OneHot | onnx::Or | onnx::PRelu | onnx::Pad | onnx::Pow | onnx::QLinearConv | onnx::QLinearMatMul | onnx::QuantizeLinear | onnx::RNN | onnx::RandomNormal | onnx::RandomNormalLike | onnx::RandomUniform | onnx::RandomUniformLike | onnx::Range | onnx::Reciprocal | onnx::ReduceL1 | onnx::ReduceL2 | onnx::ReduceLogSum | onnx::ReduceLogSumExp | onnx::ReduceMax | onnx::ReduceMean | onnx::ReduceMin | onnx::ReduceProd | onnx::ReduceSum | onnx::ReduceSumSquare | onnx::Relu | onnx::Reshape | onnx::Resize | onnx::ReverseSequence | onnx::RoiAlign | onnx::Round | onnx::Scan | onnx::Scatter | onnx::ScatterElements | onnx::ScatterND | onnx::Selu | onnx::SequenceAt | onnx::SequenceConstruct | onnx::SequenceEmpty | onnx::SequenceErase | onnx::SequenceInsert | onnx::SequenceLength | onnx::Shape | onnx::Shrink | onnx::Sigmoid | onnx::Sign | onnx::Sin | onnx::Sinh | onnx::Size | onnx::Slice | onnx::Softmax | onnx::SoftmaxCrossEntropyLoss | onnx::Softplus | onnx::Softsign | onnx::SpaceToDepth | onnx::Split | onnx::SplitToSequence | onnx::Sqrt | onnx::Squeeze | onnx::StringNormalizer | onnx::Sub | onnx::Sum | onnx::Tan | onnx::Tanh | onnx::TfIdfVectorizer | onnx::ThresholdedRelu | onnx::Tile | onnx::TopK | onnx::Transpose | onnx::Unique | onnx::Unsqueeze | onnx::Upsample | onnx::Where | onnx::Xor | pattern_matching_function | retrieve_chunk | sin | sinh | tan | tanh | update_goal | update_retrieval |
+ | MatMul | Relu | change_goal | check_termination | conflict_resolution_function | cos | cosh | exponential | linear | logistic | onnx::Abs | onnx::Acos | onnx::Acosh | onnx::Add | onnx::And | onnx::ArgMax | onnx::ArgMin | onnx::Asin | onnx::Asinh | onnx::Atan | onnx::Atanh | onnx::AveragePool | onnx::BatchNormalization | onnx::BitShift | onnx::Cast | onnx::Ceil | onnx::Celu | onnx::Clip | onnx::Compress | onnx::Concat | onnx::ConcatFromSequence | onnx::Constant | onnx::ConstantOfShape | onnx::Conv | onnx::ConvInteger | onnx::ConvTranspose | onnx::Cos | onnx::Cosh | onnx::CumSum | onnx::DepthToSpace | onnx::DequantizeLinear | onnx::Det | onnx::Div | onnx::Dropout | onnx::DynamicQuantizeLinear | onnx::Einsum | onnx::Elu | onnx::Equal | onnx::Erf | onnx::Exp | onnx::Expand | onnx::EyeLike | onnx::Flatten | onnx::Floor | onnx::GRU | onnx::Gather | onnx::GatherElements | onnx::GatherND | onnx::Gemm | onnx::GlobalAveragePool | onnx::GlobalLpPool | onnx::GlobalMaxPool | onnx::Greater | onnx::GreaterOrEqual | onnx::HardSigmoid | onnx::HardSwish | onnx::Hardmax | onnx::Identity | onnx::If | onnx::InstanceNormalization | onnx::IsInf | onnx::IsNaN | onnx::LRN | onnx::LSTM | onnx::LeakyRelu | onnx::Less | onnx::LessOrEqual | onnx::Log | onnx::LogSoftmax | onnx::Loop | onnx::LpNormalization | onnx::LpPool | onnx::MatMul | onnx::MatMulInteger | onnx::Max | onnx::MaxPool | onnx::MaxRoiPool | onnx::MaxUnpool | onnx::Mean | onnx::MeanVarianceNormalization | onnx::Min | onnx::Mod | onnx::Mul | onnx::Multinomial | onnx::Neg | onnx::NegativeLogLikelihoodLoss | onnx::NonMaxSuppression | onnx::NonZero | onnx::Not | onnx::OneHot | onnx::Or | onnx::PRelu | onnx::Pad | onnx::Pow | onnx::QLinearConv | onnx::QLinearMatMul | onnx::QuantizeLinear | onnx::RNN | onnx::RandomNormal | onnx::RandomNormalLike | onnx::RandomUniform | onnx::RandomUniformLike | onnx::Range | onnx::Reciprocal | onnx::ReduceL1 | onnx::ReduceL2 | onnx::ReduceLogSum | onnx::ReduceLogSumExp | onnx::ReduceMax | onnx::ReduceMean | onnx::ReduceMin | onnx::ReduceProd | onnx::ReduceSum | onnx::ReduceSumSquare | onnx::Relu | onnx::Reshape | onnx::Resize | onnx::ReverseSequence | onnx::RoiAlign | onnx::Round | onnx::Scan | onnx::Scatter | onnx::ScatterElements | onnx::ScatterND | onnx::Selu | onnx::SequenceAt | onnx::SequenceConstruct | onnx::SequenceEmpty | onnx::SequenceErase | onnx::SequenceInsert | onnx::SequenceLength | onnx::Shape | onnx::Shrink | onnx::Sigmoid | onnx::Sign | onnx::Sin | onnx::Sinh | onnx::Size | onnx::Slice | onnx::Softmax | onnx::SoftmaxCrossEntropyLoss | onnx::Softplus | onnx::Softsign | onnx::SpaceToDepth | onnx::Split | onnx::SplitToSequence | onnx::Sqrt | onnx::Squeeze | onnx::StringNormalizer | onnx::Sub | onnx::Sum | onnx::Tan | onnx::Tanh | onnx::TfIdfVectorizer | onnx::ThresholdedRelu | onnx::Tile | onnx::TopK | onnx::Transpose | onnx::Trilu | onnx::Unique | onnx::Unsqueeze | onnx::Upsample | onnx::Where | onnx::Xor | pattern_matching_function | retrieve_chunk | sin | sinh | tan | tanh | update_goal | update_retrieval |
## linear
A linear function, calculated from a slope and an intercept
linear(variable0, slope, intercept) = (variable0 * slope + intercept)
@@ -58,6 +58,15 @@ These functions are defined in https://github.com/ModECI/MDF/blob/main/src/modec
Relu(A) = A * (A > 0)
Python version: A * (A > 0)
+## onnx::HardSwish
+
+HardSwish takes one input data (Tensor) and produces one output data (Tensor) where
+the HardSwish function, y = x * max(0, min(1, alpha * x + beta)) = x * HardSigmoid(x),
+where alpha = 1/6 and beta = 0.5, is applied to the tensor elementwise.
+
+onnx::HardSwish(X) = onnx_ops.hardswish(X)
+Python version: onnx_ops.hardswish(X)
+
## onnx::LessOrEqual
Returns the tensor resulted from performing the `less_equal` logical operation
@@ -504,6 +513,24 @@ This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; fo
onnx::BitShift(X, Y) = onnx_ops.bitshift(X, Y, direction)
Python version: onnx_ops.bitshift(X, Y, direction)
+## onnx::Trilu
+
+Given a 2-D matrix or batches of 2-D matrices, returns the upper or lower triangular part of the tensor(s).
+The attribute "upper" determines whether the upper or lower part is retained. If set to true,
+the upper triangular matrix is retained. Lower triangular matrix is retained otherwise.
+Default value for the "upper" attribute is true.
+Trilu takes one input tensor of shape [*, N, M], where * is zero or more batch dimensions. The upper triangular part consists
+of the elements on and above the given diagonal (k). The lower triangular part consists of elements on and below the diagonal.
+All other elements in the matrix are set to zero.
+If k = 0, the triangular part on and above/below the main diagonal is retained.
+If upper is set to true, a positive k retains the upper triangular matrix excluding the main diagonal and (k-1) diagonals above it.
+A negative k value retains the main diagonal and |k| diagonals below it.
+If upper is set to false, a positive k retains the lower triangular matrix including the main diagonal and k diagonals above it.
+A negative k value excludes the main diagonal and (|k|-1) diagonals below it.
+
+onnx::Trilu(input, k) = onnx_ops.trilu(input, k, upper)
+Python version: onnx_ops.trilu(input, k, upper)
+
## onnx::RoiAlign
Region of Interest (RoI) align operation described in the
@@ -1191,6 +1218,8 @@ For example A = [[1, 2], [3, 4]], B = [1, 2], tile(A, B) = [[1, 2, 1, 2], [3, 4,
Performs element-wise binary subtraction (with Numpy-style broadcasting support).
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; for more details please check [the doc](Broadcasting.md).
+
+(Opset 14 change): Extend supported types to include uint8, int8, uint16, and int16.
onnx::Sub(A, B) = onnx_ops.sub(A, B)
Python version: onnx_ops.sub(A, B)
@@ -1514,6 +1543,8 @@ the tensor elementwise.
Performs element-wise binary multiplication (with Numpy-style broadcasting support).
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; for more details please check [the doc](Broadcasting.md).
+
+(Opset 14 change): Extend supported types to include uint8, int8, uint16, and int16.
onnx::Mul(A, B) = onnx_ops.mul(A, B)
Python version: onnx_ops.mul(A, B)
@@ -1631,8 +1662,8 @@ Equations (Default: f=Tanh):
- Ht = f(Xt*(Wi^T) + Ht-1*(Ri^T) + Wbi + Rbi)
This operator has **optional** inputs/outputs. See [the doc](IR.md) for more details about the representation of optional arguments. An empty string may be used in the place of an actual argument's name to indicate a missing argument. Trailing optional arguments (those not followed by an argument that is present) may also be simply omitted.
-onnx::RNN(X, W, R, B, sequence_lens, initial_h) = onnx_ops.rnn(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size)
-Python version: onnx_ops.rnn(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size)
+onnx::RNN(X, W, R, B, sequence_lens, initial_h) = onnx_ops.rnn(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, layout)
+Python version: onnx_ops.rnn(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, layout)
## onnx::Pad
@@ -1813,9 +1844,10 @@ First input is the data tensor, second input is a shape tensor which specifies t
At most one dimension of the new shape can be -1. In this case, the value is
inferred from the size of the tensor and the remaining dimensions. A dimension
could also be 0, in which case the actual dimension value is unchanged (i.e. taken
-from the input tensor).
-onnx::Reshape(data, shape) = onnx_ops.reshape(data, shape)
-Python version: onnx_ops.reshape(data, shape)
+from the input tensor). If 'allowzero' is set, and the new shape includes 0, the
+dimension will be set explicitly to zero (i.e. not taken from input tensor)
+onnx::Reshape(data, shape) = onnx_ops.reshape(data, shape, allowzero)
+Python version: onnx_ops.reshape(data, shape, allowzero)
## onnx::ReduceL2
@@ -2047,17 +2079,46 @@ output data (Tensor) where the function `f(x) = alpha * x for x < 0`,
Carries out batch normalization as described in the paper
https://arxiv.org/abs/1502.03167. Depending on the mode it is being run,
-there are multiple cases for the number of outputs, which we list below:
+There are five required inputs 'X', 'scale', 'B', 'input_mean' and
+'input_var'.
+Note that 'input_mean' and 'input_var' are expected to be the estimated
+statistics in inference mode (training_mode=False, default),
+and the running statistics in training mode (training_mode=True).
+There are multiple cases for the number of outputs, which we list below:
+
+Output case #1: Y, running_mean, running_var (training_mode=True)
+Output case #2: Y (training_mode=False)
+
+When training_mode=False, extra outputs are invalid.
+The outputs are updated as follows when training_mode=True:
+```
+running_mean = input_mean * momentum + current_mean * (1 - momentum)
+running_var = input_var * momentum + current_var * (1 - momentum)
+
+Y = (X - current_mean) / sqrt(current_var + epsilon) * scale + B
-Output case #1: Y, mean, var, saved_mean, saved_var (training mode)
-Output case #2: Y (test mode)
+where:
+
+current_mean = ReduceMean(X, axis=all_except_channel_index)
+current_var = ReduceVar(X, axis=all_except_channel_index)
+
+Notice that ReduceVar refers to the population variance, and it equals to
+sum(sqrd(x_i - x_avg)) / N
+where N is the population size (this formula does not use sample size N - 1).
+
+```
+
+When training_mode=False:
+```
+Y = (X - input_mean) / sqrt(input_var + epsilon) * scale + B
+```
For previous (depreciated) non-spatial cases, implementors are suggested
-to flatten the input shape to (N x C*D1*D2 ..*Dn) before a BatchNormalization Op.
+to flatten the input shape to (N x C * D1 * D2 * ... * Dn) before a BatchNormalization Op.
This operator has **optional** inputs/outputs. See [the doc](IR.md) for more details about the representation of optional arguments. An empty string may be used in the place of an actual argument's name to indicate a missing argument. Trailing optional arguments (those not followed by an argument that is present) may also be simply omitted.
-onnx::BatchNormalization(X, scale, B, mean, var) = onnx_ops.batchnormalization(X, scale, B, mean, var, epsilon, momentum)
-Python version: onnx_ops.batchnormalization(X, scale, B, mean, var, epsilon, momentum)
+onnx::BatchNormalization(X, scale, B, input_mean, input_var) = onnx_ops.batchnormalization(X, scale, B, input_mean, input_var, epsilon, momentum, training_mode)
+Python version: onnx_ops.batchnormalization(X, scale, B, input_mean, input_var, epsilon, momentum, training_mode)
## onnx::Cosh
@@ -2182,8 +2243,8 @@ Equations (Default: f=Sigmoid, g=Tanh, h=Tanh):
- Ht = ot (.) h(Ct)
This operator has **optional** inputs/outputs. See [the doc](IR.md) for more details about the representation of optional arguments. An empty string may be used in the place of an actual argument's name to indicate a missing argument. Trailing optional arguments (those not followed by an argument that is present) may also be simply omitted.
-onnx::LSTM(X, W, R, B, sequence_lens, initial_h, initial_c, P) = onnx_ops.lstm(X, W, R, B, sequence_lens, initial_h, initial_c, P, activation_alpha, activation_beta, activations, clip, direction, hidden_size, input_forget)
-Python version: onnx_ops.lstm(X, W, R, B, sequence_lens, initial_h, initial_c, P, activation_alpha, activation_beta, activations, clip, direction, hidden_size, input_forget)
+onnx::LSTM(X, W, R, B, sequence_lens, initial_h, initial_c, P) = onnx_ops.lstm(X, W, R, B, sequence_lens, initial_h, initial_c, P, activation_alpha, activation_beta, activations, clip, direction, hidden_size, input_forget, layout)
+Python version: onnx_ops.lstm(X, W, R, B, sequence_lens, initial_h, initial_c, P, activation_alpha, activation_beta, activations, clip, direction, hidden_size, input_forget, layout)
## onnx::Unsqueeze
@@ -2537,8 +2598,8 @@ Equations (Default: f=Sigmoid, g=Tanh):
- Ht = (1 - zt) (.) ht + zt (.) Ht-1
This operator has **optional** inputs/outputs. See [the doc](IR.md) for more details about the representation of optional arguments. An empty string may be used in the place of an actual argument's name to indicate a missing argument. Trailing optional arguments (those not followed by an argument that is present) may also be simply omitted.
-onnx::GRU(X, W, R, B, sequence_lens, initial_h) = onnx_ops.gru(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, linear_before_reset)
-Python version: onnx_ops.gru(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, linear_before_reset)
+onnx::GRU(X, W, R, B, sequence_lens, initial_h) = onnx_ops.gru(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, layout, linear_before_reset)
+Python version: onnx_ops.gru(X, W, R, B, sequence_lens, initial_h, activation_alpha, activation_beta, activations, clip, direction, hidden_size, layout, linear_before_reset)
## onnx::Resize
@@ -2695,6 +2756,8 @@ The type of the output tensor is integer.
Performs element-wise binary addition (with Numpy-style broadcasting support).
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; for more details please check [the doc](Broadcasting.md).
+
+(Opset 14 change): Extend supported types to include uint8, int8, uint16, and int16.
onnx::Add(A, B) = onnx_ops.add(A, B)
Python version: onnx_ops.add(A, B)
@@ -2785,6 +2848,8 @@ This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; fo
Performs element-wise binary division (with Numpy-style broadcasting support).
This operator supports **multidirectional (i.e., Numpy-style) broadcasting**; for more details please check [the doc](Broadcasting.md).
+
+(Opset 14 change): Extend supported types to include uint8, int8, uint16, and int16.
onnx::Div(A, B) = onnx_ops.div(A, B)
Python version: onnx_ops.div(A, B)
diff --git a/setup.cfg b/setup.cfg
index 6e6208be..d25eae30 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -40,9 +40,8 @@ install_requires =
matplotlib
graphviz
h5py
- onnx
- onnxruntime
- skl2onnx
+ onnxruntime>=1.12.0
+ skl2onnx>=1.13
attrs>=21.1.0
cattrs
modelspec<0.3,>=0.2.6