【问题标题】:subset of any pre-trained model in tensorflow张量流中任何预训练模型的子集
【发布时间】:2018-02-09 10:43:34
【问题描述】:

我们可以在 tensorflow 中获取任何预训练模型的子集吗?例如,如果我们有一个可以检测 545 个对象的预训练模型,我们是否可以制作这个模型的一个子集,它只能检测 20 个对象,这样可以减少加载模型以及检测过程所花费的时间。

【问题讨论】:

    标签: tensorflow object-detection training-data


    【解决方案1】:

    您能做的最好的事情就是减少仅与最后(输出)层相关的权重。因此,如果您的倒数第二层的大小为 1000,那么它会将您的参数减少 (1000 * 545 - 1000 * 20) = 525000。
    但是,如果您的网络非常深,这将不会带来很大的加速,因为您仍然需要计算除最后一层之外的所有其他层。

    【讨论】:

      【解决方案2】:

      你可以,但这是一个不可忽略的工作量,并且不会显着提高速度。

      确实,您需要更改的只是类别预测层,您必须将其从 n_featuresx545 减少到 n_featuresx20。通常在那个阶段你有n_features=7*7=49(虽然它实际上取决于你使用的方法;这对于使用通常设置的更快的 RCNN 来说是正确的),所以你会节省大约26k 参数和8million 每个图像的操作(考虑到每张图像 300 次检测),与对象检测模型中通常涉及的数百万个参数和数十亿次操作相比,这可以忽略不计。

      并且在不重新训练的情况下更改预测层并且在保持训练值的同时保持训练的值并不是一蹴而就的,您必须编写一段代码来手动修改您的网络。

      【讨论】:

        猜你喜欢
        • 2020-02-29
        • 1970-01-01
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 2018-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多