Tensorflow瓶颈的概念是什么?


Answers:


20

神经网络中的瓶颈只是神经元数量少于其下方或上方的层。拥有这样的一层可以鼓励网络压缩要素表示以使其最适合可用空间,从而在训练过程中获得最大的损失。

在CNN(例如Google的Inception网络)中,添加了瓶颈层以减少网络中的要素地图(也称为“通道”)的数量,否则这些要素地图往往会在每一层中增加。这是通过使用输出通道比输入通道少的1x1卷积来实现的。

通常,您不直接计算瓶颈层的权重,训练过程将像其他所有权重一样处理权重。您必须猜测并为瓶颈层选择合适的大小,然后进行实验才能找到运行良好的网络体系结构。此处的目标通常是找到一个可以很好地归纳为新图像的网络,而瓶颈层可以通过减少网络中的参数数量来帮助您,同时仍然允许其深度并代表许多特征图。


8

想象一下,您想重新计算预训练模型的最后一层:

Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output

要训​​练[最后一层重新计算],您需要针对给定的输入数据多次评估[冻结层]的输出。为了节省时间,您只能计算一次这些输出。

Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1

然后,您存储所有输入的瓶颈功能#i,并直接使用它们来训练[最后一层重新计算]。

来自“ image_retraining”示例的“ cache_bottlenecks”函数的解释:

因为我们可能会多次读取同一张图像(如果在训练过程中未施加任何失真),如果我们在预处理期间为每个图像计算一次瓶颈层值,然后仅读取那些缓存的值,则可以大大加快速度在训练过程中反复进行。


5

Tensorflow瓶颈是在进行带有数据识别的实际培训之前的最后一个预处理阶段。在此阶段,可以从每个训练图像形成数据结构,从而可以进行训练的最终阶段,并将该图像与训练材料中使用的所有其他图像区分开。有点像图像的指纹。

它涉及到重新训练命令,顾名思义,这是命令执行的主要时间消耗者。如果这个瓶颈似乎太耗时,则可能不得不减少培训材料的数量。

由于这是一个命令行命令,因此我不知道确切的算法。算法在Github中的代码中是公开的,但据认为是如此复杂(根据定义,执行时间很长),我相信我不能只是用这种答案写下来。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.