Tensorflow中tf.nn, tf.layers, tf.contrib模块介绍
本文链接:https://blog.csdn.net/weixin_44633882/article/details/89211865
简单了解一下tensorflow中tf.nn,tf.layers,tf.contrib三个模块。
- 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
)
- 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
- tf.layers.Layer: 其中所有layer类的基类。
同样,也给一个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
)
- 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