Tensorflow模型文件大小差异很大

时间:2017-11-15 09:25:55

标签: tensorflow

我正在使用tensorflow框架,我注意到tensorflow模型文件的大小存在很大差异。

例如,框架提供了2个模型:

  • 用于微调的预训练模型之一,例如
  • 和一个包含未经训练的版本。

它们的大小均为172.539 kb

当我在模型中应用微调时,图中有一些小的变化(框架中有一个模块)并保存我的模型,大小基本保持不变:{{1} }。

首先,我有点惊讶我的微调模型有点大,因为我将最后一层从21级更改为14级,所以我希望模型文件大小稍微小一点,但由于差异很小,所以我没有'请注意。

但是,当我使用相同的模型文件(我预先训练的那个)训练相同的模型并将模型保存在磁盘中时,文件大小完全不同:178.525 kb。通过术语 train 我的意思是我允许网络修改所有参数而不仅仅是最后一层的参数。

正在实施的模型是 resnet 的变体,用于语义图像分割(如果某人可以从模型本身中扣除预期的模型文件大小)。

所以,我的问题是为什么我在模型文件大小上有这样的差异,为什么我保存的微调模型比原始模型大?有没有办法在要保存的模型中包含/排除参数?

P.S.1一些可能很方便的信息:

  1. 我正在使用 tensorflow v2 模型保存,而我认为框架文件使用 v1 。除了前者生成3个文件之外,我不确定如何识别这个。
  2. 该框架名为tensorflow-deeplab-resnet,可以找到here,模型为here
  3. P.S.2 我不确定堆栈溢出也是这个问题的正确位置。

1 个答案:

答案 0 :(得分:0)

这是因为,在训练模型并保存模型时,Tensorflow还会保存操作的渐变。

因此,允许对最后一层进行培训会增加您保存的模型的大小。允许对整个模型进行训练实际上会使保存文件的大小加倍,因为每个操作都会保存其渐变。