tf.contrib.layer, tf.layer, tf.nn, tf.keras.layer, tf.contrib.slim 的区别联系

tensorflow 的不同模块下面存有很多相似的函数,目前会出现几种情况:
  • 情况一: tf不同模块下面的函数共享,通过别称来统一
  • 情况二: tf不同模块下面的函数相似,使用情况相同,但函数本身稍有不同
  • 情况三: tf不同版本之间的函数会有变更及废止,函数也可能出现迁移到其他模块下面的情况

tensorflow 1.8.版中各模块的官方解释:
tf.contrib:

contrib module containing volatile or experimental code.
contrib 模型保存具有试验性, 极易变更的代码

tf.contrib.layer

Ops for building neural network layers, regularizers, summaries, etc.
tf.contribute.layer 中存有 用于构建神经网络层,正则化程序,摘要等的函数

tf.nn

None
未做注释,但存有有关神经网络基础运算的函数

tf.layer

Public API for tf.layers namespace.
tf.layers命名空间的API, 函数相对来说比较稳定

tf.contrib.slim

TF-Slim is a lightweight library for defining, training and evaluating complex models in TensorFlow. Components of tf-slim can be freely mixed with native tensorflow, as well as other frameworks, such as tf.contrib.learn.
TF-Slim是一个轻量级库,用于在TensorFlow中定义,训练和评估复杂模型。 tf-slim的组件可以与native tensorflow以及其他框架(如tf.contrib.learn)自由混合

tf.keras.

Keras is an object-oriented API for defining and training neural networks.
This module contains a pure-TensorFlow implementation of the Keras API, allowing for deep integration with >TensorFlow functionality.
Keras是一个面向对象的API,用于定义和训练神经网络。 该模块包含Keras API的纯TensorFlow实现,允许与TensorFlow功能进行深度集成


情况一:

在这里插入图片描述
由图可见, tf.keras.layers中的函数在tf.compat.中也会出现. 名称不同,使用同一函数,完成相同功能


情况二:

以tensorflow 1.8.0为例:

tf.layers 中的conv2d:

tf.layers.conv2d(
    inputs,
    filters,
    kernel_size,
    strides=(1, 1),
    padding='valid',
    data_format='channels_last',
    dilation_rate=(1, 1),
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=tf.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,
    reuse=None
)

tf.contrib.layers 中的conv2d

tf.contrib.layers.conv2d(
    inputs,
    num_outputs,
    kernel_size,
    stride=1,
    padding='SAME',
    data_format=None,
    rate=1,
    activation_fn=tf.nn.relu,
    normalizer_fn=None,
    normalizer_params=None,
    weights_initializer=initializers.xavier_initializer(),
    weights_regularizer=None,
    biases_initializer=tf.zeros_initializer(),
    biases_regularizer=None,
    reuse=None,
    variables_collections=None,
    outputs_collections=None,
    trainable=True,
    scope=None
)

tf.nn 中的conv2d

tf.nn.conv2d(
    input,
    filter,
    strides,
    padding,
    use_cudnn_on_gpu=True,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None
)

总的来说,不同模块下面的函数类似,但是具体的参数会有不同.相对起来,tf.contrib下面的函数由于函数丰富,使用的人数更多,但tf.contrib下面的模块存在被废止更新的风险. tf.layer 稳定


情况三:

tensorflow 1.12 版本中tf.conrib.layer函数与1.8版本比较:

  • 如图可知,函数有所变动
  • 但各个模型中函数总体变动不大,趋于稳定.

总结:
相同名称函数实现功能相似,一般情况下,同名函数之间可以相互替代,但会因为module不同略有差异,因此实践操作时不确定的函数建议查看官网文档.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值