Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在tensorflow中使用预先训练的对象检测?_Python 3.x_Tensorflow_Deep Learning_Object Detection - Fatal编程技术网

Python 3.x 如何在tensorflow中使用预先训练的对象检测?

Python 3.x 如何在tensorflow中使用预先训练的对象检测?,python-3.x,tensorflow,deep-learning,object-detection,Python 3.x,Tensorflow,Deep Learning,Object Detection,如何在tensorflow项目中使用预训练网络的权重? 我知道一些关于这个的理论信息,但没有关于tensorflow编码的信息。正如@Matias Valdenegro在评论中指出的,你的第一个问题没有意义。然而,对于你的第二个问题,有多种方法可以做到这一点。你正在寻找的术语是迁移学习(TL)。TL意味着将“知识”(基本上只是权重)从预先训练的模型转移到您的模型中。现在有几种类型的TL 1) 您可以将预先训练好的模型中的所有权重转移到您的模型中,并以此作为训练网络的起点。 这是在这样一种情况下

如何在tensorflow项目中使用预训练网络的权重?
我知道一些关于这个的理论信息,但没有关于tensorflow编码的信息。

正如@Matias Valdenegro在评论中指出的,你的第一个问题没有意义。然而,对于你的第二个问题,有多种方法可以做到这一点。你正在寻找的术语是迁移学习(TL)。TL意味着将“知识”(基本上只是权重)从预先训练的模型转移到您的模型中。现在有几种类型的TL

1) 您可以将预先训练好的模型中的所有权重转移到您的模型中,并以此作为训练网络的起点。

  • 这是在这样一种情况下完成的,即您现在有额外的数据来训练您的模型,但您不想再次开始训练。因此,您只需加载上一个模型的权重,然后继续训练
2)您只将部分权重从预先训练的模型转移到新模型中。

  • 这是在这样一种情况下完成的,即您有一个经过训练的模型,可以在5类对象之间进行分类。现在,您需要添加/删除一个类。如果要添加的新类具有与现有类类似的特性,则不必从一开始就重新训练整个网络。因此,除了完全连接的层(现在输出大小不同)之外,您可以使用与以前的模型相同的精确体系结构构建另一个模型。在这种情况下,您将希望加载上一个模型中卷积层的权重,并冻结它们,同时只重新训练完全连接的层
要在Tensorflow中执行这些操作

1) 第一种类型的TL可以通过创建一个与前一个模型具有相同精确体系结构的模型来执行,只需使用tf.train.Saver().restore()模块加载模型并继续训练即可

2) 第二种类型的TL可以通过为要保留权重的零件创建具有相同精确体系结构的模型来执行,然后指定要从先前预训练权重加载的权重的名称。您可以使用参数“trainable=False”来防止Tensorflow更新它们


我希望这能有所帮助。

这是一个非常广泛的问题。对于第二部分,搜索“转移学习”。目标检测性能不是通过准确性而是通过地图来衡量的,所以你的第一个问题毫无意义。