我是NN API和TensorFlow的初学者。
我试图以protobuff格式(.pb)保存我训练过的模型,有很多博客解释如何将模型保存为protobuff。我不明白的一件事是在将图形保存为protobuff之前冻结图形的重要性是什么?我读到冻结隐蔽变量为常数,这是否意味着该模型不再可训练? 模特还会冻结什么? 冻结后该模型失去了什么? 任何人都可以解释或给出关于冻结细节的一些指示吗?
答案 0 :(得分:1)
这只是对您问题的部分答案。
冻结的图很容易优化。例如,在进行推理(正向传播)时,您可以将某些图层融合在一起。使用变量和操作之间的图形(非冻结图形)无法做到这一点。为什么要将图层融合在一起?有多种原因。特定于硬件:在一组张量中一起计算特定数量的操作可能更容易,这些张量特定于您的cpu或gpu的结构。例如,TensorRT是一个图形优化器,它从冻结的图形开始工作(此处是由tensorRT完成的有关图形优化的更多信息:https://devblogs.nvidia.com/tensorrt-integration-speeds-tensorflow-inference/)。该软件可以进行图形优化以及特定于硬件的优化。
据我了解,您可以取消冻结图表。我只对它们进行了优化,所以没有使用此功能。但是这里有代码:https://gist.github.com/tokestermw/795cc1fd6d0c9069b20204cbd133e36b
这是另一个可能有用的问题: TensorFlow: Is there a way to convert a frozen graph into a checkpoint model? 它尚未得到答复。
答案 1 :(得分:0)
冻结模型意味着生成包含有关图形和检查点变量的信息的单个文件,但是将这些超参数保存为图形结构内的常量。这样就消除了保存在检查点文件中的其他信息,例如每个点上的渐变,这些信息都包括在内,以便可以重新加载模型并从上次停止的地方继续进行训练。由于在纯粹为推理提供模型时不需要这样做,因此将其冻结冻结。冻结模型是Google .pb文件类型的文件。