本篇介绍函数包括:
tf.conv2d
tf.nn.relu
tf.nn.max_pool
tf.nn.droupout
tf.nn.sigmoid_cross_entropy_with_logits
tf.truncated_normal
tf.constant
tf.placeholder
tf.nn.bias_add
tf.reduce_mean
tf.squared_difference
tf.square tf.Variable
tf.nn.conv2d
conv2d( input, filter, strides, padding, use_cudnn_on_gpu=True, data_format='NHWC', name=None )
参数列表:
参数名 |
必选 |
类型 |
说明 |
input |
是 |
tensor |
是一个 4 维的 tensor,即 [ batch, in_height, in_width, in_channels ](若 input 是图像,[ 训练时一个 batch 的图片数量, 图片高度, 图片宽度, 图像通道数 ]) |
filter |
是 |
tensor |
是一个 4 维的 tensor,即 [ filter_height, filter_width, in_channels, out_channels ](若 input 是图像,[ 卷积核的高度,卷积核的宽度,图像通道数,卷积核个数 ]),filter 的 in_channels 必须和 input 的 in_channels 相等 |
strides |
是 |
列表 |
长度为 4 的 list,卷积时候在 input 上每一维的步长,一般 strides[0] = strides[3] = 1 |
padding |
是 |
string |
只能为 " VALID "," SAME " 中之一,这个值决定了不同的卷积方式。VALID 丢弃方式;SAME:补全方式 |
use_cudnn_on_gpu |
否 |
bool |
是否使用 cudnn 加速,默认为 true |
data_format |
否 |
string |
只能是 " NHWC ", " NCHW ",默认 " NHWC " |
name |
否 |
string |
运算名称 |
tf.nn.relu:
relu( features, name=None )
功能说明:
relu激活函数可以参考 CS231n: Convolutional Neural Networks for Visual Recognition
参数列表:
参数名 |
必选 |
类型 |
说明 |
features |
是 |
tensor |
是以下类型float32, float64, int32, int64, uint8, int16, int8, uint16, half |
name |
否 |
string |
运算名称 |
tf.nn.max_pool
max_pool( value, ksize, strides, padding, data_format='NHWC', name=None )
功能说明:
池化的原理可参考 CS231n: Convolutional Neural Networks for Visual Recognition
参数列表:
参数名 |
必选 |
类型 |
说明 |
value |
是 |
tensor |
4 维的张量,即 [ batch, height, width, channels ],数据类型为 tf.float32 |
ksize |
是 |
列表 |
池化窗口的大小,长度为 4 的 list,一般是 [1, height, width, 1],因为不在 batch 和 channels 上做池化,所以第一个和最后一个维度为 1 |
strides |
是 |
列表 |
池化窗口在每一个维度上的步长,一般 strides[0] = strides[3] = 1 |
padding |
是 |
string |
只能为 " VALID "," SAME " 中之一,这个值决定了不同的池化方式。VALID 丢弃方式;SAME:补全方式 |
data_format |
否 |
string |
只能是 " NHWC ", " NCHW ",默认" NHWC " |
name |
否 |
string |
运算名称 |
tf.nn.dropout
dropout( x, keep_prob, noise_shape=None, seed=None, name=None )
功能说明:
原理可参考 CS231n: Convolutional Neural Networks for Visual Recognition
参数列表:
参数名 |
必选 |
类型 |
说明 |
x |
是 |
tensor |
输出元素是 x 中的元素以 keep_prob 概率除以 keep_prob,否则为 0 |
keep_prob |
是 |
scalar Tensor |
dropout 的概率,一般是占位符 |
noise_shape |
否 |
tensor |
默认情况下,每个元素是否 dropout 是相互独立。如果指定 noise_shape,若 noise_shape[i] == shape(x)[i],该维度的元素是否 dropout 是相互独立,若 noise_shape[i] != shape(x)[i] 该维度元素是否 dropout 不相互独立,要么一起 dropout 要么一起保留 |
seed |
否 |
数值 |
如果指定该值,每次 dropout 结果相同 |
name |
否 |
string |
运算名称 |
tf.nn.sigmoid_cross_entropy_with_logits
sigmoid_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, name=None )
功能说明:
先对 logits 通过 sigmoid 计算,再计算交叉熵,交叉熵代价函数可以参考 CS231n: Convolutional Neural Networks for Visual Recognition
参数列表:
参数名 |
必选 |
类型 |
说明 |
_sentinel |
否 |
None |
没有使用的参数 |
labels |
否 |
Tensor |
type, shape 与 logits相同 |
logits |
否 |
Tensor |
type 是 float32 或者 float64 |
name |
否 |
string |
运算名称 |
tf.truncated_normal
truncated_normal( shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None )
功能说明:
产生截断正态分布随机数,取值范围为 [ mean - 2 * stddev, mean + 2 * stddev ]。
参数列表:
参数名 |
必选 |
类型 |
说明 |
shape |
是 |
1 维整形张量或 array |
输出张量的维度 |
mean |
否 |
0 维张量或数值 |
均值 |
stddev |
否 |
0 维张量或数值 |
标准差 |
dtype |
否 |
dtype |
输出类型 |
seed |
否 |
数值 |
随机种子,若 seed 赋值,每次产生相同随机数 |
name |
否 |
string |
运算名称 |
tf.constant
constant( value, dtype=None, shape=None, name='Const', verify_shape=False )
功能说明:
根据 value 的值生成一个 shape 维度的常量张量
参数列表:
参数名 |
必选 |
类型 |
说明 |
value |
是 |
常量数值或者 list |
输出张量的值 |
dtype |
否 |
dtype |
输出张量元素类型 |
shape |
否 |
1 维整形张量或 array |
输出张量的维度 |
name |
否 |
string |
张量名称 |
verify_shape |
否 |
Boolean |
检测 shape 是否和 value 的 shape 一致,若为 Fasle,不一致时,会用最后一个元素将 shape 补全 |
tf.placeholder
placeholder( dtype, shape=None, name=None )
功能说明:
是一种占位符,在执行时候需要为其提供数据
参数列表:
参数名 |
必选 |
类型 |
说明 |
dtype |
是 |
dtype |
占位符数据类型 |
shape |
否 |
1 维整形张量或 array |
占位符维度 |
name |
否 |
string |
占位符名称 |
tf.nn.bias_add
bias_add( value, bias, data_format=None, name=None )
功能说明:
将偏差项 bias 加到 value 上面,可以看做是 tf.add 的一个特例,其中 bias 必须是一维的,并且维度和 value 的最后一维相同,数据类型必须和 value 相同。
参数列表:
参数名 |
必选 |
类型 |
说明 |
value |
是 |
张量 |
数据类型为 float, double, int64, int32, uint8, int16, int8, complex64, or complex128 |
bias |
是 |
1 维张量 |
维度必须和 value 最后一维维度相等 |
data_format |
否 |
string |
数据格式,支持 ' NHWC ' 和 ' NCHW ' |
name |
否 |
string |
运算名称 |
tf.reduce_mean
reduce_mean( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None )
功能说明:
计算张量 input_tensor 平均值
参数列表:
参数名 |
必选 |
类型 |
说明 |
input_tensor |
是 |
张量 |
输入待求平均值的张量 |
axis |
否 |
None、0、1 |
None:全局求平均值;0:求每一列平均值;1:求每一行平均值 |
keep_dims |
否 |
Boolean |
保留原来的维度(例如不会从二维矩阵降为一维向量) |
name |
否 |
string |
运算名称 |
reduction_indices |
否 |
None |
和 axis 等价,被弃用 |
tf.squared_difference
squared_difference( x, y, name=None )
功能说明:
计算张量 x、y 对应元素差平方
参数列表:
参数名 |
必选 |
类型 |
说明 |
x |
是 |
张量 |
是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型 |
y |
是 |
张量 |
是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型 |
name |
否 |
string |
运算名称 |
tf.square
square( x, name=None )
功能说明:
计算张量对应元素平方
参数列表:
参数名 |
必选 |
类型 |
说明 |
x |
是 |
张量 |
是 half, float32, float64, int32, int64, complex64, complex128 其中一种类型 |
name |
否 |
string |
运算名称 |
tf.Variable
__init__( initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None )
功能说明:
维护图在执行过程中的状态信息,例如神经网络权重值的变化。
参数列表:
参数名 |
类型 |
说明 |
initial_value |
张量 |
Variable 类的初始值,这个变量必须指定 shape 信息,否则后面 validate_shape 需设为 False |
trainable |
Boolean |
是否把变量添加到 collection GraphKeys.TRAINABLE_VARIABLES 中(collection 是一种全局存储,不受变量名生存空间影响,一处保存,到处可取) |
collections |
Graph collections |
全局存储,默认是 GraphKeys.GLOBAL_VARIABLES |
validate_shape |
Boolean |
是否允许被未知维度的 initial_value 初始化 |
caching_device |
string |
指明哪个 device 用来缓存变量 |
name |
string |
变量名 |
dtype |
dtype |
如果被设置,初始化的值就会按照这个类型初始化 |
expected_shape |
TensorShape |
要是设置了,那么初始的值会是这种维度 |