模型权重和深度学习训练框架之间的关系

不同格式的模型权重文件

通常我们可以看到有Caffe或Pytorch或TensorFlow的模型参数文件

不同的团队可能会使用不同的深度学习训练框架, 然后使用其内部的模型权重保存函数进行保存, 以便之后自己的复用发布开源, 让别人使用自己已经训练好的模型权重, 在其基础上进一步做改进或训练

那么该团队如果使用TensorFlow框架, 权重文件保存的形式就是TensorFlow的

如果是Caffe, 那么权重文件的保存形式就是Caffe的

反之, Pytorch也一样

不同训练框架(如Caffe和PyTorch)的权重文件的主要差异通常在于它们的存储和组织方式

但是其保存的都是神经网络层与层之间的权重, 这是不变的

所以权重文件的格式是可以在不同训练框架之间进行转化的

权重文件格式的转化

比如使用Caffe的团队发布了Caffe格式的模型权重文件

然后另一个使用Pytorch的团队想调用该模型权重文件, 那么他们只要使用模型权重文件格式转换工具将Caffe格式的权重文件转化为Pytorch格式的即可

这些工具会读取一个框架的权重文件,然后按照另一个框架的权重文件格式创建新的权重文件

本质的神经网络模型的权重和结构是不变的, 只是权重文件的格式取决于所使用的框架

模型权重文件的调用

权重文件的调用通常在模型加载权重的时候进行。

一般来说,我们会在代码中指定权重文件的路径,然后使用模型加载函数读取这个权重文件,将权重加载到模型的相应位置上。这个过程在不同的深度学习框架中可能略有差异。

权重格式转化工具的原理和局限

权重转换工具的工作原理是读取一个框架的权重文件理解其组织结构,然后将这些权重按照另一个框架的要求重新组织和保存

不过要注意的是,虽然神经网络的权重是可以在不同的框架之间转换的,但并非所有的操作都可以在不同的框架之间一一对应。例如,某些特定的层(比如自定义的层)或某些特定的操作可能在某个框架中存在但在另一个框架中不存在,这在进行权重转换时可能会遇到问题。在这种情况下,可能需要自己编写一些代码来实现这些特定的操作或层

TensorFlow和Pytorch权重保存文件的格式和后缀

  1. TensorFlow
    • TensorFlow 通常使用 SavedModel 格式来保存完整的模型,包括权重、计算图和可能的元数据。这是一个目录,其中包含二进制格式的权重文件和一个用于描述模型计算图的**.pb文件。SavedModel 目录的名称通常没有固定的后缀,但内部的计算图文件通常是以.pb为后缀**。
    • TensorFlow 也可以选择只保存模型的权重,这通常使用 Checkpoint 格式,它包含一个或多个包含模型权重的.chkpt文件
  2. PyTorch
    • PyTorch 通常使用 .pth 或 .pt 后缀的文件来保存模型的权重。这些文件实际上是一种称为 pickle 的 Python 对象序列化格式,PyTorch 使用这种格式来保存模型的所有参数信息
    • PyTorch 也可以保存完整的模型,包括模型的结构和权重,这通常也使用 .pth 或 .pt 后缀的文件

猜你喜欢

转载自blog.csdn.net/ahahayaa/article/details/131363156