onnx2tf 1.29.3__tar.gz → 1.29.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {onnx2tf-1.29.3/onnx2tf.egg-info → onnx2tf-1.29.4}/PKG-INFO +7 -7
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/README.md +6 -6
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/__init__.py +1 -1
- onnx2tf-1.29.4/onnx2tf/ops/BitwiseAnd.py +115 -0
- onnx2tf-1.29.4/onnx2tf/ops/BitwiseNot.py +98 -0
- onnx2tf-1.29.4/onnx2tf/ops/BitwiseOr.py +115 -0
- onnx2tf-1.29.4/onnx2tf/ops/BitwiseXor.py +115 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4/onnx2tf.egg-info}/PKG-INFO +7 -7
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf.egg-info/SOURCES.txt +4 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/pyproject.toml +1 -1
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/LICENSE +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/LICENSE_onnx-tensorflow +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/__main__.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/onnx2tf.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Abs.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Acos.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Acosh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Add.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/And.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ArgMax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ArgMin.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Asin.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Asinh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Atan.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Atanh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/AveragePool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/BatchNormalization.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Bernoulli.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/BitShift.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Cast.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Ceil.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Celu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Clip.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Col2Im.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Compress.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Concat.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ConcatFromSequence.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Constant.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ConstantOfShape.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Conv.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ConvInteger.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ConvTranspose.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Cos.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Cosh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/CumSum.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/DepthToSpace.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/DequantizeLinear.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Det.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Div.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Dropout.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/DynamicQuantizeLinear.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Einsum.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Elu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Equal.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Erf.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Exp.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Expand.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/EyeLike.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Flatten.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Floor.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/FusedConv.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GRU.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Gather.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GatherElements.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GatherND.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Gelu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Gemm.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GlobalAveragePool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GlobalLpPool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GlobalMaxPool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Greater.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GreaterOrEqual.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GridSample.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/GroupNorm.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/HammingWindow.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/HannWindow.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/HardSigmoid.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/HardSwish.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Hardmax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Identity.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/If.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Input.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/InstanceNormalization.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Inverse.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/IsInf.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/IsNaN.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LRN.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LSTM.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LayerNormalization.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LeakyRelu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Less.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LessOrEqual.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Log.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LogSoftmax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/LpNormalization.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MatMul.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MatMulInteger.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Max.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MaxPool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MaxUnpool.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Mean.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MeanVarianceNormalization.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/MelWeightMatrix.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Min.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Mish.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Mod.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Mul.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Multinomial.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Neg.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/NonMaxSuppression.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/NonZero.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Not.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/OneHot.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/OptionalGetElement.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/OptionalHasElement.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Or.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/PRelu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Pad.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Pow.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearAdd.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearConcat.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearConv.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearLeakyRelu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearMatMul.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearMul.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearSigmoid.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QLinearSoftmax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/QuantizeLinear.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RNN.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RandomNormal.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RandomNormalLike.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RandomUniform.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RandomUniformLike.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Range.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Reciprocal.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceL1.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceL2.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceLogSum.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceLogSumExp.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceMax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceMean.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceMin.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceProd.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceSum.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReduceSumSquare.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Relu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Reshape.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Resize.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ReverseSequence.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/RoiAlign.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Round.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/STFT.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ScaleAndTranslate.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Scatter.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ScatterElements.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ScatterND.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Selu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceAt.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceConstruct.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceEmpty.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceErase.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceInsert.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SequenceLength.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Shape.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Shrink.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sigmoid.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sign.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sin.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sinh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Size.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Slice.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Softmax.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Softplus.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Softsign.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SpaceToDepth.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Split.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/SplitToSequence.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sqrt.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Squeeze.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/StringNormalizer.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sub.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Sum.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Tan.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Tanh.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/ThresholdedRelu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Tile.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/TopK.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Transpose.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Trilu.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Unique.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Unsqueeze.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Upsample.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Where.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/Xor.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/_Loop.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/__Loop.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/ops/__init__.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/__init__.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/common_functions.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/enums.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/iterative_json_optimizer.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/json_auto_generator.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf/utils/logging.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf.egg-info/dependency_links.txt +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf.egg-info/requires.txt +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/onnx2tf.egg-info/top_level.txt +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/setup.cfg +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/setup.py +0 -0
- {onnx2tf-1.29.3 → onnx2tf-1.29.4}/tests/test_model_convert.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onnx2tf
|
|
3
|
-
Version: 1.29.
|
|
3
|
+
Version: 1.29.4
|
|
4
4
|
Summary: Self-Created Tools to convert ONNX files (NCHW) to TensorFlow/TFLite/Keras format (NHWC).
|
|
5
5
|
Home-page: https://github.com/PINTO0309/onnx2tf
|
|
6
6
|
Author: Katsuya Hyodo
|
|
@@ -106,10 +106,10 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
|
|
|
106
106
|
|BatchNormalization|:heavy_check_mark:|
|
|
107
107
|
|Bernoulli|:heavy_check_mark:|
|
|
108
108
|
|BitShift|:heavy_check_mark:|
|
|
109
|
-
|BitwiseAnd
|
|
110
|
-
|BitwiseNot
|
|
111
|
-
|BitwiseOr
|
|
112
|
-
|BitwiseXor
|
|
109
|
+
|BitwiseAnd|:heavy_check_mark:|
|
|
110
|
+
|BitwiseNot|:heavy_check_mark:|
|
|
111
|
+
|BitwiseOr|:heavy_check_mark:|
|
|
112
|
+
|BitwiseXor|:heavy_check_mark:|
|
|
113
113
|
|Cast|:heavy_check_mark:|
|
|
114
114
|
|Ceil|:heavy_check_mark:|
|
|
115
115
|
|Celu|:heavy_check_mark:|
|
|
@@ -345,7 +345,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
345
345
|
docker run --rm -it \
|
|
346
346
|
-v `pwd`:/workdir \
|
|
347
347
|
-w /workdir \
|
|
348
|
-
ghcr.io/pinto0309/onnx2tf:1.29.
|
|
348
|
+
ghcr.io/pinto0309/onnx2tf:1.29.4
|
|
349
349
|
|
|
350
350
|
or
|
|
351
351
|
|
|
@@ -353,7 +353,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
353
353
|
docker run --rm -it \
|
|
354
354
|
-v `pwd`:/workdir \
|
|
355
355
|
-w /workdir \
|
|
356
|
-
docker.io/pinto0309/onnx2tf:1.29.
|
|
356
|
+
docker.io/pinto0309/onnx2tf:1.29.4
|
|
357
357
|
|
|
358
358
|
or
|
|
359
359
|
|
|
@@ -70,10 +70,10 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
|
|
|
70
70
|
|BatchNormalization|:heavy_check_mark:|
|
|
71
71
|
|Bernoulli|:heavy_check_mark:|
|
|
72
72
|
|BitShift|:heavy_check_mark:|
|
|
73
|
-
|BitwiseAnd
|
|
74
|
-
|BitwiseNot
|
|
75
|
-
|BitwiseOr
|
|
76
|
-
|BitwiseXor
|
|
73
|
+
|BitwiseAnd|:heavy_check_mark:|
|
|
74
|
+
|BitwiseNot|:heavy_check_mark:|
|
|
75
|
+
|BitwiseOr|:heavy_check_mark:|
|
|
76
|
+
|BitwiseXor|:heavy_check_mark:|
|
|
77
77
|
|Cast|:heavy_check_mark:|
|
|
78
78
|
|Ceil|:heavy_check_mark:|
|
|
79
79
|
|Celu|:heavy_check_mark:|
|
|
@@ -309,7 +309,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
309
309
|
docker run --rm -it \
|
|
310
310
|
-v `pwd`:/workdir \
|
|
311
311
|
-w /workdir \
|
|
312
|
-
ghcr.io/pinto0309/onnx2tf:1.29.
|
|
312
|
+
ghcr.io/pinto0309/onnx2tf:1.29.4
|
|
313
313
|
|
|
314
314
|
or
|
|
315
315
|
|
|
@@ -317,7 +317,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
317
317
|
docker run --rm -it \
|
|
318
318
|
-v `pwd`:/workdir \
|
|
319
319
|
-w /workdir \
|
|
320
|
-
docker.io/pinto0309/onnx2tf:1.29.
|
|
320
|
+
docker.io/pinto0309/onnx2tf:1.29.4
|
|
321
321
|
|
|
322
322
|
or
|
|
323
323
|
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import random
|
|
2
|
+
random.seed(0)
|
|
3
|
+
import numpy as np
|
|
4
|
+
np.random.seed(0)
|
|
5
|
+
import tensorflow as tf
|
|
6
|
+
import onnx_graphsurgeon as gs
|
|
7
|
+
from onnx2tf.utils.common_functions import (
|
|
8
|
+
get_constant_or_variable,
|
|
9
|
+
print_node_info,
|
|
10
|
+
inverted_operation_enable_disable,
|
|
11
|
+
make_tf_node_info,
|
|
12
|
+
get_replacement_parameter,
|
|
13
|
+
pre_process_transpose,
|
|
14
|
+
post_process_transpose,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@print_node_info
|
|
19
|
+
@inverted_operation_enable_disable
|
|
20
|
+
@get_replacement_parameter
|
|
21
|
+
def make_node(
|
|
22
|
+
*,
|
|
23
|
+
graph_node: gs.Node,
|
|
24
|
+
tf_layers_dict: dict,
|
|
25
|
+
**kwargs: dict,
|
|
26
|
+
):
|
|
27
|
+
"""BitwiseAnd
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
graph_node: gs.Node
|
|
32
|
+
graph_surgeon Node
|
|
33
|
+
|
|
34
|
+
tf_layers_dict: dict
|
|
35
|
+
optype, shape, dtype, tensorflow graph
|
|
36
|
+
"""
|
|
37
|
+
before_op_output_shape_trans_1 = \
|
|
38
|
+
tf_layers_dict.get(graph_node.inputs[0].name, {}).get('before_op_output_shape_trans', True)
|
|
39
|
+
before_op_output_shape_trans_2 = \
|
|
40
|
+
tf_layers_dict.get(graph_node.inputs[1].name, {}).get('before_op_output_shape_trans', True)
|
|
41
|
+
before_op_output_shape_trans = \
|
|
42
|
+
before_op_output_shape_trans_1 \
|
|
43
|
+
and before_op_output_shape_trans_2
|
|
44
|
+
|
|
45
|
+
graph_node_input_1 = get_constant_or_variable(
|
|
46
|
+
graph_node.inputs[0],
|
|
47
|
+
before_op_output_shape_trans,
|
|
48
|
+
)
|
|
49
|
+
graph_node_input_2 = get_constant_or_variable(
|
|
50
|
+
graph_node.inputs[1],
|
|
51
|
+
before_op_output_shape_trans,
|
|
52
|
+
)
|
|
53
|
+
graph_node_output: gs.Variable = graph_node.outputs[0]
|
|
54
|
+
|
|
55
|
+
shape = graph_node_output.shape
|
|
56
|
+
dtype = graph_node_output.dtype
|
|
57
|
+
|
|
58
|
+
# Preserving Graph Structure (Dict)
|
|
59
|
+
tf_layers_dict[graph_node_output.name] = {
|
|
60
|
+
'optype': graph_node.op,
|
|
61
|
+
'shape': shape,
|
|
62
|
+
'dtype': dtype,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Generation of TF OP
|
|
66
|
+
input_tensor_1 = tf_layers_dict[graph_node_input_1.name]['tf_node'] \
|
|
67
|
+
if isinstance(graph_node_input_1, gs.Variable) else graph_node_input_1
|
|
68
|
+
input_tensor_2 = tf_layers_dict[graph_node_input_2.name]['tf_node'] \
|
|
69
|
+
if isinstance(graph_node_input_2, gs.Variable) else graph_node_input_2
|
|
70
|
+
|
|
71
|
+
# Pre-process transpose
|
|
72
|
+
input_tensor_1 = pre_process_transpose(
|
|
73
|
+
value_before_transpose=input_tensor_1,
|
|
74
|
+
param_target='inputs',
|
|
75
|
+
param_name=graph_node.inputs[0].name,
|
|
76
|
+
**kwargs,
|
|
77
|
+
)
|
|
78
|
+
input_tensor_2 = pre_process_transpose(
|
|
79
|
+
value_before_transpose=input_tensor_2,
|
|
80
|
+
param_target='inputs',
|
|
81
|
+
param_name=graph_node.inputs[1].name,
|
|
82
|
+
**kwargs,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
tf_op_type = None
|
|
86
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = \
|
|
87
|
+
tf.bitwise.bitwise_and(
|
|
88
|
+
x=input_tensor_1,
|
|
89
|
+
y=input_tensor_2,
|
|
90
|
+
name=graph_node.name,
|
|
91
|
+
)
|
|
92
|
+
tf_op_type = tf.bitwise.bitwise_and
|
|
93
|
+
|
|
94
|
+
# Post-process transpose
|
|
95
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = post_process_transpose(
|
|
96
|
+
value_before_transpose=tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
97
|
+
param_target='outputs',
|
|
98
|
+
param_name=graph_node.outputs[0].name,
|
|
99
|
+
**kwargs,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Generation of Debug Info
|
|
103
|
+
tf_layers_dict[graph_node_output.name]['tf_node_info'] = \
|
|
104
|
+
make_tf_node_info(
|
|
105
|
+
node_info={
|
|
106
|
+
'tf_op_type': tf_op_type,
|
|
107
|
+
'tf_inputs': {
|
|
108
|
+
'x': input_tensor_1,
|
|
109
|
+
'y': input_tensor_2,
|
|
110
|
+
},
|
|
111
|
+
'tf_outputs': {
|
|
112
|
+
'output': tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import random
|
|
2
|
+
random.seed(0)
|
|
3
|
+
import numpy as np
|
|
4
|
+
np.random.seed(0)
|
|
5
|
+
import tensorflow as tf
|
|
6
|
+
import onnx_graphsurgeon as gs
|
|
7
|
+
from onnx2tf.utils.common_functions import (
|
|
8
|
+
get_constant_or_variable,
|
|
9
|
+
print_node_info,
|
|
10
|
+
inverted_operation_enable_disable,
|
|
11
|
+
make_tf_node_info,
|
|
12
|
+
get_replacement_parameter,
|
|
13
|
+
pre_process_transpose,
|
|
14
|
+
post_process_transpose,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@print_node_info
|
|
19
|
+
@inverted_operation_enable_disable
|
|
20
|
+
@get_replacement_parameter
|
|
21
|
+
def make_node(
|
|
22
|
+
*,
|
|
23
|
+
graph_node: gs.Node,
|
|
24
|
+
tf_layers_dict: dict,
|
|
25
|
+
**kwargs: dict,
|
|
26
|
+
):
|
|
27
|
+
"""BitwiseNot
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
graph_node: gs.Node
|
|
32
|
+
graph_surgeon Node
|
|
33
|
+
|
|
34
|
+
tf_layers_dict: dict
|
|
35
|
+
optype, shape, dtype, tensorflow graph
|
|
36
|
+
"""
|
|
37
|
+
before_op_output_shape_trans_1 = \
|
|
38
|
+
tf_layers_dict.get(graph_node.inputs[0].name, {}).get('before_op_output_shape_trans', True)
|
|
39
|
+
before_op_output_shape_trans = \
|
|
40
|
+
before_op_output_shape_trans_1
|
|
41
|
+
|
|
42
|
+
graph_node_input_1 = get_constant_or_variable(
|
|
43
|
+
graph_node.inputs[0],
|
|
44
|
+
before_op_output_shape_trans,
|
|
45
|
+
)
|
|
46
|
+
graph_node_output: gs.Variable = graph_node.outputs[0]
|
|
47
|
+
|
|
48
|
+
shape = graph_node_output.shape
|
|
49
|
+
dtype = graph_node_output.dtype
|
|
50
|
+
|
|
51
|
+
# Preserving Graph Structure (Dict)
|
|
52
|
+
tf_layers_dict[graph_node_output.name] = {
|
|
53
|
+
'optype': graph_node.op,
|
|
54
|
+
'shape': shape,
|
|
55
|
+
'dtype': dtype,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
# Generation of TF OP
|
|
59
|
+
input_tensor_1 = tf_layers_dict[graph_node_input_1.name]['tf_node'] \
|
|
60
|
+
if isinstance(graph_node_input_1, gs.Variable) else graph_node_input_1
|
|
61
|
+
|
|
62
|
+
# Pre-process transpose
|
|
63
|
+
input_tensor_1 = pre_process_transpose(
|
|
64
|
+
value_before_transpose=input_tensor_1,
|
|
65
|
+
param_target='inputs',
|
|
66
|
+
param_name=graph_node.inputs[0].name,
|
|
67
|
+
**kwargs,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
tf_op_type = None
|
|
71
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = \
|
|
72
|
+
tf.bitwise.invert(
|
|
73
|
+
x=input_tensor_1,
|
|
74
|
+
name=graph_node.name,
|
|
75
|
+
)
|
|
76
|
+
tf_op_type = tf.bitwise.invert
|
|
77
|
+
|
|
78
|
+
# Post-process transpose
|
|
79
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = post_process_transpose(
|
|
80
|
+
value_before_transpose=tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
81
|
+
param_target='outputs',
|
|
82
|
+
param_name=graph_node.outputs[0].name,
|
|
83
|
+
**kwargs,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
# Generation of Debug Info
|
|
87
|
+
tf_layers_dict[graph_node_output.name]['tf_node_info'] = \
|
|
88
|
+
make_tf_node_info(
|
|
89
|
+
node_info={
|
|
90
|
+
'tf_op_type': tf_op_type,
|
|
91
|
+
'tf_inputs': {
|
|
92
|
+
'x': input_tensor_1,
|
|
93
|
+
},
|
|
94
|
+
'tf_outputs': {
|
|
95
|
+
'output': tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import random
|
|
2
|
+
random.seed(0)
|
|
3
|
+
import numpy as np
|
|
4
|
+
np.random.seed(0)
|
|
5
|
+
import tensorflow as tf
|
|
6
|
+
import onnx_graphsurgeon as gs
|
|
7
|
+
from onnx2tf.utils.common_functions import (
|
|
8
|
+
get_constant_or_variable,
|
|
9
|
+
print_node_info,
|
|
10
|
+
inverted_operation_enable_disable,
|
|
11
|
+
make_tf_node_info,
|
|
12
|
+
get_replacement_parameter,
|
|
13
|
+
pre_process_transpose,
|
|
14
|
+
post_process_transpose,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@print_node_info
|
|
19
|
+
@inverted_operation_enable_disable
|
|
20
|
+
@get_replacement_parameter
|
|
21
|
+
def make_node(
|
|
22
|
+
*,
|
|
23
|
+
graph_node: gs.Node,
|
|
24
|
+
tf_layers_dict: dict,
|
|
25
|
+
**kwargs: dict,
|
|
26
|
+
):
|
|
27
|
+
"""BitwiseOr
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
graph_node: gs.Node
|
|
32
|
+
graph_surgeon Node
|
|
33
|
+
|
|
34
|
+
tf_layers_dict: dict
|
|
35
|
+
optype, shape, dtype, tensorflow graph
|
|
36
|
+
"""
|
|
37
|
+
before_op_output_shape_trans_1 = \
|
|
38
|
+
tf_layers_dict.get(graph_node.inputs[0].name, {}).get('before_op_output_shape_trans', True)
|
|
39
|
+
before_op_output_shape_trans_2 = \
|
|
40
|
+
tf_layers_dict.get(graph_node.inputs[1].name, {}).get('before_op_output_shape_trans', True)
|
|
41
|
+
before_op_output_shape_trans = \
|
|
42
|
+
before_op_output_shape_trans_1 \
|
|
43
|
+
and before_op_output_shape_trans_2
|
|
44
|
+
|
|
45
|
+
graph_node_input_1 = get_constant_or_variable(
|
|
46
|
+
graph_node.inputs[0],
|
|
47
|
+
before_op_output_shape_trans,
|
|
48
|
+
)
|
|
49
|
+
graph_node_input_2 = get_constant_or_variable(
|
|
50
|
+
graph_node.inputs[1],
|
|
51
|
+
before_op_output_shape_trans,
|
|
52
|
+
)
|
|
53
|
+
graph_node_output: gs.Variable = graph_node.outputs[0]
|
|
54
|
+
|
|
55
|
+
shape = graph_node_output.shape
|
|
56
|
+
dtype = graph_node_output.dtype
|
|
57
|
+
|
|
58
|
+
# Preserving Graph Structure (Dict)
|
|
59
|
+
tf_layers_dict[graph_node_output.name] = {
|
|
60
|
+
'optype': graph_node.op,
|
|
61
|
+
'shape': shape,
|
|
62
|
+
'dtype': dtype,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Generation of TF OP
|
|
66
|
+
input_tensor_1 = tf_layers_dict[graph_node_input_1.name]['tf_node'] \
|
|
67
|
+
if isinstance(graph_node_input_1, gs.Variable) else graph_node_input_1
|
|
68
|
+
input_tensor_2 = tf_layers_dict[graph_node_input_2.name]['tf_node'] \
|
|
69
|
+
if isinstance(graph_node_input_2, gs.Variable) else graph_node_input_2
|
|
70
|
+
|
|
71
|
+
# Pre-process transpose
|
|
72
|
+
input_tensor_1 = pre_process_transpose(
|
|
73
|
+
value_before_transpose=input_tensor_1,
|
|
74
|
+
param_target='inputs',
|
|
75
|
+
param_name=graph_node.inputs[0].name,
|
|
76
|
+
**kwargs,
|
|
77
|
+
)
|
|
78
|
+
input_tensor_2 = pre_process_transpose(
|
|
79
|
+
value_before_transpose=input_tensor_2,
|
|
80
|
+
param_target='inputs',
|
|
81
|
+
param_name=graph_node.inputs[1].name,
|
|
82
|
+
**kwargs,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
tf_op_type = None
|
|
86
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = \
|
|
87
|
+
tf.bitwise.bitwise_or(
|
|
88
|
+
x=input_tensor_1,
|
|
89
|
+
y=input_tensor_2,
|
|
90
|
+
name=graph_node.name,
|
|
91
|
+
)
|
|
92
|
+
tf_op_type = tf.bitwise.bitwise_or
|
|
93
|
+
|
|
94
|
+
# Post-process transpose
|
|
95
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = post_process_transpose(
|
|
96
|
+
value_before_transpose=tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
97
|
+
param_target='outputs',
|
|
98
|
+
param_name=graph_node.outputs[0].name,
|
|
99
|
+
**kwargs,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Generation of Debug Info
|
|
103
|
+
tf_layers_dict[graph_node_output.name]['tf_node_info'] = \
|
|
104
|
+
make_tf_node_info(
|
|
105
|
+
node_info={
|
|
106
|
+
'tf_op_type': tf_op_type,
|
|
107
|
+
'tf_inputs': {
|
|
108
|
+
'x': input_tensor_1,
|
|
109
|
+
'y': input_tensor_2,
|
|
110
|
+
},
|
|
111
|
+
'tf_outputs': {
|
|
112
|
+
'output': tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import random
|
|
2
|
+
random.seed(0)
|
|
3
|
+
import numpy as np
|
|
4
|
+
np.random.seed(0)
|
|
5
|
+
import tensorflow as tf
|
|
6
|
+
import onnx_graphsurgeon as gs
|
|
7
|
+
from onnx2tf.utils.common_functions import (
|
|
8
|
+
get_constant_or_variable,
|
|
9
|
+
print_node_info,
|
|
10
|
+
inverted_operation_enable_disable,
|
|
11
|
+
make_tf_node_info,
|
|
12
|
+
get_replacement_parameter,
|
|
13
|
+
pre_process_transpose,
|
|
14
|
+
post_process_transpose,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@print_node_info
|
|
19
|
+
@inverted_operation_enable_disable
|
|
20
|
+
@get_replacement_parameter
|
|
21
|
+
def make_node(
|
|
22
|
+
*,
|
|
23
|
+
graph_node: gs.Node,
|
|
24
|
+
tf_layers_dict: dict,
|
|
25
|
+
**kwargs: dict,
|
|
26
|
+
):
|
|
27
|
+
"""BitwiseXor
|
|
28
|
+
|
|
29
|
+
Parameters
|
|
30
|
+
----------
|
|
31
|
+
graph_node: gs.Node
|
|
32
|
+
graph_surgeon Node
|
|
33
|
+
|
|
34
|
+
tf_layers_dict: dict
|
|
35
|
+
optype, shape, dtype, tensorflow graph
|
|
36
|
+
"""
|
|
37
|
+
before_op_output_shape_trans_1 = \
|
|
38
|
+
tf_layers_dict.get(graph_node.inputs[0].name, {}).get('before_op_output_shape_trans', True)
|
|
39
|
+
before_op_output_shape_trans_2 = \
|
|
40
|
+
tf_layers_dict.get(graph_node.inputs[1].name, {}).get('before_op_output_shape_trans', True)
|
|
41
|
+
before_op_output_shape_trans = \
|
|
42
|
+
before_op_output_shape_trans_1 \
|
|
43
|
+
and before_op_output_shape_trans_2
|
|
44
|
+
|
|
45
|
+
graph_node_input_1 = get_constant_or_variable(
|
|
46
|
+
graph_node.inputs[0],
|
|
47
|
+
before_op_output_shape_trans,
|
|
48
|
+
)
|
|
49
|
+
graph_node_input_2 = get_constant_or_variable(
|
|
50
|
+
graph_node.inputs[1],
|
|
51
|
+
before_op_output_shape_trans,
|
|
52
|
+
)
|
|
53
|
+
graph_node_output: gs.Variable = graph_node.outputs[0]
|
|
54
|
+
|
|
55
|
+
shape = graph_node_output.shape
|
|
56
|
+
dtype = graph_node_output.dtype
|
|
57
|
+
|
|
58
|
+
# Preserving Graph Structure (Dict)
|
|
59
|
+
tf_layers_dict[graph_node_output.name] = {
|
|
60
|
+
'optype': graph_node.op,
|
|
61
|
+
'shape': shape,
|
|
62
|
+
'dtype': dtype,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Generation of TF OP
|
|
66
|
+
input_tensor_1 = tf_layers_dict[graph_node_input_1.name]['tf_node'] \
|
|
67
|
+
if isinstance(graph_node_input_1, gs.Variable) else graph_node_input_1
|
|
68
|
+
input_tensor_2 = tf_layers_dict[graph_node_input_2.name]['tf_node'] \
|
|
69
|
+
if isinstance(graph_node_input_2, gs.Variable) else graph_node_input_2
|
|
70
|
+
|
|
71
|
+
# Pre-process transpose
|
|
72
|
+
input_tensor_1 = pre_process_transpose(
|
|
73
|
+
value_before_transpose=input_tensor_1,
|
|
74
|
+
param_target='inputs',
|
|
75
|
+
param_name=graph_node.inputs[0].name,
|
|
76
|
+
**kwargs,
|
|
77
|
+
)
|
|
78
|
+
input_tensor_2 = pre_process_transpose(
|
|
79
|
+
value_before_transpose=input_tensor_2,
|
|
80
|
+
param_target='inputs',
|
|
81
|
+
param_name=graph_node.inputs[1].name,
|
|
82
|
+
**kwargs,
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
tf_op_type = None
|
|
86
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = \
|
|
87
|
+
tf.bitwise.bitwise_xor(
|
|
88
|
+
x=input_tensor_1,
|
|
89
|
+
y=input_tensor_2,
|
|
90
|
+
name=graph_node.name,
|
|
91
|
+
)
|
|
92
|
+
tf_op_type = tf.bitwise.bitwise_xor
|
|
93
|
+
|
|
94
|
+
# Post-process transpose
|
|
95
|
+
tf_layers_dict[graph_node_output.name]['tf_node'] = post_process_transpose(
|
|
96
|
+
value_before_transpose=tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
97
|
+
param_target='outputs',
|
|
98
|
+
param_name=graph_node.outputs[0].name,
|
|
99
|
+
**kwargs,
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Generation of Debug Info
|
|
103
|
+
tf_layers_dict[graph_node_output.name]['tf_node_info'] = \
|
|
104
|
+
make_tf_node_info(
|
|
105
|
+
node_info={
|
|
106
|
+
'tf_op_type': tf_op_type,
|
|
107
|
+
'tf_inputs': {
|
|
108
|
+
'x': input_tensor_1,
|
|
109
|
+
'y': input_tensor_2,
|
|
110
|
+
},
|
|
111
|
+
'tf_outputs': {
|
|
112
|
+
'output': tf_layers_dict[graph_node_output.name]['tf_node'],
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: onnx2tf
|
|
3
|
-
Version: 1.29.
|
|
3
|
+
Version: 1.29.4
|
|
4
4
|
Summary: Self-Created Tools to convert ONNX files (NCHW) to TensorFlow/TFLite/Keras format (NHWC).
|
|
5
5
|
Home-page: https://github.com/PINTO0309/onnx2tf
|
|
6
6
|
Author: Katsuya Hyodo
|
|
@@ -106,10 +106,10 @@ https://github.com/PINTO0309/onnx2tf/wiki/model_status
|
|
|
106
106
|
|BatchNormalization|:heavy_check_mark:|
|
|
107
107
|
|Bernoulli|:heavy_check_mark:|
|
|
108
108
|
|BitShift|:heavy_check_mark:|
|
|
109
|
-
|BitwiseAnd
|
|
110
|
-
|BitwiseNot
|
|
111
|
-
|BitwiseOr
|
|
112
|
-
|BitwiseXor
|
|
109
|
+
|BitwiseAnd|:heavy_check_mark:|
|
|
110
|
+
|BitwiseNot|:heavy_check_mark:|
|
|
111
|
+
|BitwiseOr|:heavy_check_mark:|
|
|
112
|
+
|BitwiseXor|:heavy_check_mark:|
|
|
113
113
|
|Cast|:heavy_check_mark:|
|
|
114
114
|
|Ceil|:heavy_check_mark:|
|
|
115
115
|
|Celu|:heavy_check_mark:|
|
|
@@ -345,7 +345,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
345
345
|
docker run --rm -it \
|
|
346
346
|
-v `pwd`:/workdir \
|
|
347
347
|
-w /workdir \
|
|
348
|
-
ghcr.io/pinto0309/onnx2tf:1.29.
|
|
348
|
+
ghcr.io/pinto0309/onnx2tf:1.29.4
|
|
349
349
|
|
|
350
350
|
or
|
|
351
351
|
|
|
@@ -353,7 +353,7 @@ Video speed is adjusted approximately 50 times slower than actual speed.
|
|
|
353
353
|
docker run --rm -it \
|
|
354
354
|
-v `pwd`:/workdir \
|
|
355
355
|
-w /workdir \
|
|
356
|
-
docker.io/pinto0309/onnx2tf:1.29.
|
|
356
|
+
docker.io/pinto0309/onnx2tf:1.29.4
|
|
357
357
|
|
|
358
358
|
or
|
|
359
359
|
|
|
@@ -26,6 +26,10 @@ onnx2tf/ops/AveragePool.py
|
|
|
26
26
|
onnx2tf/ops/BatchNormalization.py
|
|
27
27
|
onnx2tf/ops/Bernoulli.py
|
|
28
28
|
onnx2tf/ops/BitShift.py
|
|
29
|
+
onnx2tf/ops/BitwiseAnd.py
|
|
30
|
+
onnx2tf/ops/BitwiseNot.py
|
|
31
|
+
onnx2tf/ops/BitwiseOr.py
|
|
32
|
+
onnx2tf/ops/BitwiseXor.py
|
|
29
33
|
onnx2tf/ops/Cast.py
|
|
30
34
|
onnx2tf/ops/Ceil.py
|
|
31
35
|
onnx2tf/ops/Celu.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|