ONNX
tensorflow-onnx将使用安装在您系统上的ONNX版本,如果没有找到,则安装最新的ONNX版本。
我们支持ONNX opset-6到opset-12。默认情况下,我们使用opset-9来生成ONNX图,因为大多数运行时都支持opset-9。对未来opsets add的支持在它们发布时添加。
如果您希望使用特定的opset生成图形,请在命令行中使用——opset,例如——opset 12。
TensorFlow
我们支持所有tf-1.x图。为了使我们的测试矩阵易于管理,我们测试了tf2onnx在tf-1.12及以上版本上运行。tf2onnx-1.5.4是一直测试到tf-1.4的最后一个版本。
在tf-2.x下运行时 tf2onnx将使用tensorflow V2控制流。
您可以在tf-1.x之上安装tf2onnx或tf - 2. x。
Python
我们支持Python 3.6、3.7和3.8。tf2onnx-1.5.4是支持Python 3.5的最后一个版本。
Status
我们支持许多TensorFlow模型。对全连接、卷积和动态LSTM网络的支持是成熟的。我们用于测试的模型列表可以在这里找到。
支持RNN类和api:LSTMCell, BasicLSTMCell, GRUCell, GRUBlockCell, MultiRNNCell, and user defined RNN cells inheriting rnn_cell_impl.RNNCell, used along with DropoutWrapper, BahdanauAttention, AttentionWrapper。在转换RNN模型时检查技巧。
您可以在这里找到支持的Tensorflow操作的列表以及它们到ONNX的映射。
TensorFlow有广泛的功能。我们试图在这里(https://github.com/onnx/tensorflow-onnx/blob/master/Troubleshooting.md)记录我们遇到的常见问题。
Install
安装TensorFlow,runtime,tf2onnx等。
要开始使用tensorflow-onnx,请运行t2onnx.convert命令,提供:
TensorFlow模型的路径(模型以保存的模型格式)
ONNX输出文件的名称
上面的命令对ONNX opset使用默认值8。如果您需要一个新的opset,或者想要限制您的模型使用一个旧的opset,那么您可以为该命令提供——opset参数。如果您不确定使用哪个opset,请参考ONNX操作符文档。
如果您的TensorFlow模型的格式与保存的模型不同,那么您需要提供模型图的输入和输出。
如果您的模型是checkpoint或graphdef格式的,并且您不知道模型的输入和输出节点,您可以使用summarize_graph TensorFlow实用程序。需要从源代码下载并构建summarize_graph工具。如果您可以选择进入您的模型提供程序并以保存的模型格式获取模型,那么我们建议这样做。
Parameters
input/output:
TensorFlow模型的输入/输出名称,可以通过summary graph工具找到。这些名称通常以:0结尾,例如——inputs input0:0,input1:0。保存模型格式的模型不需要输入和输出。一些模型指定的占位符具有未知的等级和暗值,不能映射到onnx。在这些情况下,可以在[]中的输入名称之后添加形状,例如——inputs X:0[1,28,28,3]
–inputs-as-nchw
默认情况下,我们保留TensorFlow模型中给出的输入图像格式(nchw或nhwc)。如果您的主机(例如windows)原生格式为nchw,并且模型是为nhwc编写的,那么——inputs-as-nchw tensorflow-onnx将转换输入。这样做是方便的应用程序和转换器在许多情况下可以优化转置。例如——inputs input0:0,input1:0——inputs-as-nchw input0:0假设图像以nchw的形式传入input0:0,而给定的TensorFlow模型使用nhwc。
opset
默认情况下,我们使用opset 8来生成图形。通过指定——opset,用户可以覆盖默认值,以生成具有所需opset的图形。例如——opset 5将创建一个只使用opset 5中可用的ops的onnx图。因为旧的opset在大多数情况下有更少的操作,一些模型可能不会在旧的opset上转换。
.
.
.
.
.
.
.
.
.
.
.
.
还有很多参数。