Tensorflow模型文件大小差异很大
我使用的是tensorflow框架,我注意到tensorflow模型文件的大小存在重大差异 例如,该框架提供了两种模型:Tensorflow模型文件大小差异很大,tensorflow,Tensorflow,我使用的是tensorflow框架,我注意到tensorflow模型文件的大小存在重大差异 例如,该框架提供了两种模型: 其中一个预训练模型将用于微调,例如 还有一个包含未经训练的版本 它们的大小都是172.539kb 当我在我的模型中应用微调,并在图形中进行一些小的更改(框架中有一个模块)并保存我的模型时,大小基本保持不变:178.525kb 首先,我有点惊讶,我的微调模型有点大,因为我只是将最后一层从21类更改为14类,所以我希望模型文件的大小稍微小一些,但由于差异太小,我没有注意到 但
- 其中一个预训练模型将用于微调,例如
- 还有一个包含未经训练的版本
172.539kb
当我在我的模型中应用微调,并在图形中进行一些小的更改(框架中有一个模块)并保存我的模型时,大小基本保持不变:178.525kb
首先,我有点惊讶,我的微调模型有点大,因为我只是将最后一层从21类更改为14类,所以我希望模型文件的大小稍微小一些,但由于差异太小,我没有注意到
但是,当我使用相同的模型文件(我指的是预训练的文件)训练相同的模型并将模型保存在磁盘中时,文件大小就大不相同了:340.097kb
。我所说的“训练”是指我允许网络修改所有参数,而不仅仅是最后一层的参数
正在实现的模型是用于语义图像分割的resnet的变体(如果有人可以从模型本身中扣除预期的模型文件大小)
所以,我的问题是,为什么我的模型文件大小有如此大的差异,为什么我保存的微调模型比原始模型大?是否有方法在要保存的模型中包含/排除参数
p.S.1一些可能有用的信息:
我不确定stack overflow是否适合这个问题。这是因为,在训练模型并保存它们时,Tensorflow也会保存操作的渐变
因此,允许在最后一层上进行训练将稍微增加保存模型的大小。允许对整个模型进行训练实际上会使保存文件的大小增加一倍,因为每个op都会保存其梯度。但这也不会影响提供的预训练模型?此保存的模型不包括渐变?如果他们提供了预先训练的模型,他们可能会从保存文件中删除渐变,因为您不需要它们进行测试。只有在以后继续训练模型才有用。@Eypros检查是否保存了渐变的一个简单方法是使用文本编辑器打开Tensorflow saver创建的
.index
文件(gedit
)然后搜索梯度
。我的索引
文件似乎是二进制文件,而不是文本文件。它是,但其中仍然有一些可读的文本,用于变量的名称。您是否可能继续向图形中添加内容,而不是替换它?在微调过程中,可能您正在添加新权重,但仍将旧权重存储在保存的文件中?在恢复之后,也许你正在重新创建所有东西,这就是你接近两倍大小的东西?你可以检查和。我的模型中肯定有冗余操作。有没有关于如何使用这些函数的例子?我意识到这些函数在对象上工作,这对于将模型保存为protobuf很有用,但对于保存检查点却没有直接作用。也许你可以使用这个模块,尽管我对它不太了解(也许与输出一起使用?)。