我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在使用的时候,我们可以根据需要现在不同的模块。但有些时候可以一起混用。
下面是对三个模块的简述:
(1)tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation。
tf.nn
- activation
- tf.nn.relu
- tf.nn.softmax:多分类的输出层
-
softmax + cross entropy:
tf.nn.softmax_cross_entropy_with_logits(logits, labels) ⇒ tf.reduce_mean()
(2)tf.layers:主要提供的高层的神经网络,主要和卷积相关的,个人感觉是对tf.nn的进一步封装,tf.nn会更底层一些。
tf.layers
定义在tensorflow/python/layers/layers.py, 为我们提供了一些高层次的构建神经网络的接口。
函数
提供的主要API包含以下几个方面:
- 卷积
- pooling
- 全连接
- 批归一化BN
- dropout
卷积
tf.layers.conv1d
conv1d(
inputs,
filters,
kernel_size,
strides=1,
padding=’valid’,
data_format=’channels_last’,
dilation_rate=1,
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
trainable=True,
name=None,
reuse=None
)
tf.layers.conv2d
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,
trainable=True,
name=None,
reuse=None
)
tf.layers.conv3d
conv3d(
inputs,
filters,
kernel_size,
strides=(1, 1, 1