Tensorflow中tf.nn, tf.layers, tf.contrib模块介绍

Tensorflow中tf.nn, tf.layers, tf.contrib模块介绍

本文链接:https://blog.csdn.net/weixin_44633882/article/details/89211865

简单了解一下tensorflow中tf.nn,tf.layers,tf.contrib三个模块。

  1. tf.nn: 封装了主要的神经网络操作(基本都是函数)
    基本使用这个模块中的函数就可以搭建一个CNN或RNN
    列举部分:
    • 常见操作: avg_pool, conv2d
    • 激活函数: sigmoid, relu, tanh
    • 小trick: batch_normalization, dropout, lrn
    • 一个子模块rnn_cell: RNNCell, LSTMCell, GRUCell

展示个conv2d的接口:

tf.nn.conv2d(
    input,
    filter,
    strides,
    padding,
    use_cudnn_on_gpu=True,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None
)
  1. tf.layers: 和tf.nn的功能基本相同,但原tf.nn中函数到这里被封装成一个类(模块)
    不包括RNN模块
    列举部分:
    • tf.layers.Layer: 其中所有layer类的基类。
      继承于Layer(tf.keras.layers.Layer)
      官方的话:It is considered legacy, and we recommend the use of tf.keras.layers.Layer instead.(官方自己也觉得历史遗留的模块太复杂太多了hahaha,所以劝大家使用keras和tf2.0)
    • 常见操作: Average pooling, BatchNormalization, Conv2D, Dropout, Flatten

同样,也给一个Conv2D的接口:
是不是这个形状很好看啊!可以看到,相较于tf.nn.conv2d()参数变多了。我比较在意的是:激活函数、kernel,bias的初始化和正则化,以及trainable都可以作为参数了。更加方便了!但我自己一般使用slim。

__init__(
    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,
    **kwargs
)
  1. tf.contrib:封装了构建计算图的高级操作,不仅仅是layers,还包括checkpoint,slim(大家都喜欢的!),seq2seq,optimizer_v2等等,其中有些操作是还在测试,有些不稳定的,官方也不定期会加入新的操作。
    还是再简单看看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
)

参考:
https://tensorflow.google.cn/api_docs/python/tf
https://blog.csdn.net/u014365862/article/details/77833481

你可能感兴趣的:(#,Tensorflow)