TF-Slim详解

TF-Slim是TensorFlow的一个库,旨在简化模型定义,提供正则化器,预定义视觉模型和训练流程。它允许用户通过变量、层和作用域简洁地定义模型,包括模型变量的管理,以及层的抽象,如卷积和全连接层。TF-Slim还支持正则化、预训练模型的使用和微调,以及训练和评估过程的自动化。此外,它提供了一种arg_scope机制,以更优雅的方式处理模型参数的默认值。
摘要由CSDN通过智能技术生成

TF-Slim
文章来源:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/slim

1-
允许用户通过消除样板代码来更紧凑地定义模型。这是通过使用参数范围和许多高级层和变量来实现的。这些工具提高了可读性和可维护性,降低了复制和粘贴超参数值的错误发生的可能性,并简化了超参数调整。
2-
通过提供常用的正则化器使开发模型变得简单。
3-
已经开发了几种广泛使用的计算机视觉模型(例如,VGG,AlexNet),并且可供用户使用。这些可以用作黑盒子,或者可以以各种方式扩展,例如,通过向不同的内层添加“多个头”。
4-
Slim可以轻松扩展复杂模型,并通过使用预先存在的模型检查点来热启动训练算法。
2-定义模型
结合variables, layers and scopes,可以使用TF-Slim简洁地定义模型。这些元素中的每一个都在下面定义。
Variable

在原tensorflow中创建变量需要预定义值或初始化机制(例如,从高斯随机采样)。此外,如果需要在特定设备(如GPU)上创建变量,则必须明确规范。为了减轻变量创建所需的代码,TF-Slim在variables.py中提供了一组瘦包装函数,允许调用者轻松定义变量。
例如,要创建权重变量,使用截断的正态分布对其进行初始化,使用l2_loss对其进行规范化并将其放在CPU上,只需要声明以下内容:

请注意,在TensorFlow中,有两种类型的变量:常规变量和本地(瞬态)变量。绝大多数变量都是常规变量:一旦创建,就可以使用保护程序将它们保存到磁盘。局部变量是仅在会话期间存在且不保存到磁盘的变量。
TF-Slim通过定义模型变量进一步区分变量,模型变量是表示模型参数的变量。模型变量在学习期间被训练或微调,并在评估或推理期间从checkpoint加载。示例包括slim.fully_connected或slim.conv2d层创建的变量。非模型变量是在学习或评估期间使用的所有其他变量,但不是实际执行推理所必需的。例如,global_step是在学习和评估期间使用的变量,但它实际上不是模型的一部分。同样,移动平均变量可能反映模型变量,但移动平均值本身不是模型变量。

这个怎么用?当您通过TF-Slim的图层创建模型变量或直接通过slim.model_variable函数创建模型变量时,TF-Slim会将变量添加到tf.GraphKeys.MODEL_VARIABLES集合中。如果您有自己的自定义图层或变量创建例程但仍希望TF-Slim管理或了解您的模型变量,该怎么办? TF-Slim提供了一个方便的功能,用于将模型变量添加到其集合中:

Layer:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值