我已经建立了一个模型,并且我能够使用 tf.contrib 的模型修剪模块成功地修剪它,默认参数和稀疏度为 90%,但问题是当我运行模型时,它仍然需要与之前相同的执行时间原始模型,我的猜测是,tensorflow 不是只运行修剪后的版本,而是运行带有掩码权重的整个图,这就是为什么即使在修剪后也没有改进的原因。
那么如何导出带有子图和各自权重的修剪模型并使用它呢?
我已经建立了一个模型,并且我能够使用 tf.contrib 的模型修剪模块成功地修剪它,默认参数和稀疏度为 90%,但问题是当我运行模型时,它仍然需要与之前相同的执行时间原始模型,我的猜测是,tensorflow 不是只运行修剪后的版本,而是运行带有掩码权重的整个图,这就是为什么即使在修剪后也没有改进的原因。
那么如何导出带有子图和各自权重的修剪模型并使用它呢?
strip_pruning_vars 实用程序可能是您正在寻找的。
从 read.me 文件:https ://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/model_pruning#adding-pruning-ops
从训练好的图中删除剪枝操作
模型训练好后,需要移除上述步骤中添加到图中的辅助变量(掩码、阈值)和剪枝操作。这可以使用 strip_pruning_vars 实用程序来完成。
你介意分享你的代码吗?