def __init__(): 初始化新创建对象的状态,在一个对象被创建以后会立即调用。
tf.name_scope(‘’): 创建一个参数名称空间
tf.placeholder(dtype, shape=None, name=Non): dtype:数据类型;shape:数据形状。默认是None,就是一维值。通常是在神经网络构建graph的时候在模型中的占位
tf.concat([tensor1, tensor2, tensor3,...], axis): 用来拼接张量的函数。axis=0 代表在第0个维度拼接;axis=1 代表在第1个维度拼接 对于一个二维矩阵,第0个维度代表最外层方括号所框下的子集,第1个维度代表内部方括号所框下的子集
tf.variable_scope:跟 tf.get_variable() 配合使用,实现变量共享的功能。
tf.truncated_normal(shape, mean, stddev) : shape表示生成张量的维度,mean是均值,stddev是标准差。这个函数产生正太分布,均值和标准差自己设定。这是一个截断的产生正太分布的函数,就是说产生正太分布的值如果与均值的差值大于两倍的标准差,那就重新生成。
tf.constant_initializer(value): 类生成一个初始值为常量value的tensor对象
tf.contrib.layers.batch_norm: 通过减少内部协变量转移加速深度网络训练。可以用作conv2d和fully_connected的标准化函数。
tf.contrib.layers.batch_norm(
inputs,
decay=0.999,
center=True,
scale=False,
epsilon=0.001,
activation_fn=None,
param_initializers=None,
param_regularizers=None,
updates_collections=tf.GraphKeys.UPDATE_OPS,
is_training=True,
reuse=None,
variables_collections=None,
outputs_collections=None,
trainable=True,
batch_weights=None,
fused=None,
data_format=DATA_FORMAT_NHWC,
zero_debias_moving_mean=False,
scope=None,
renorm=False,
renorm_clipping=None,
renorm_decay=0.99,
adjustment=None
)
1 inputs: 輸入
2 decay :衰減係數。合適的衰減係數值接近1.0,特別是含多個9的值:0.999,0.99,0.9。如果訓練集表現很好而驗證/測試集表現得不好,選擇
小的係數(推薦使用0.9)。如果想要提高穩定性,zero_debias_moving_mean設為True
3 center:如果為True,有beta偏移量;如果為False,無beta偏移量
4 scale:如果為True,則乘以gamma。如果為False,gamma則不使用。當下一層是線性的時(例如nn.relu),由於縮放可以由下一層完成,
所以可以禁用該層。
5 epsilon:避免被零除
6 activation_fn:用於啟用,預設為線性啟用函式
7 param_initializers : beta, gamma, moving mean and moving variance的優化初始化
8 param_regularizers : beta and gamma正則化優化
9 updates_collections :Collections來收集計算的更新操作。updates_ops需要使用train_op來執行。如果為None,則會新增控制元件依賴項以
確保更新已計算到位。
10 is_training:圖層是否處於訓練模式。在訓練模式下,它將積累轉入的統計量moving_mean並 moving_variance使用給定的指數移動平均值 decay。當它不是在訓練模式,那麼它將使用的數值moving_mean和moving_variance。
11 scope:可選範圍variable_scope
tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None):
input : 输入的要做卷积的图片,要求为一个张量,shape为 [ batch, in_height, in_weight, in_channel ],其中batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel 为图片的通道数,灰度图该值为1,彩色图为3。(也可以用其它值,但是具体含义不是很理解)
filter: 卷积核,要求也是一个张量,shape为 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 为卷积核高度,filter_weight 为卷积核宽度,in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel 是卷积核数量。
strides: 卷积时在图像每一维的步长,这是一个一维的向量,[ 1, strides, strides, 1],第一位和最后一位固定必须是1
padding: string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。"SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑
use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true
更多:https://blog.csdn.net/zuolixiangfisher/article/details/80528989
tf.reshape(tensor,shape,name=None):函数的作用是将tensor变换为参数shape形式,其中的shape为一个列表形式,特殊的是列表可以实现逆序的遍历,即list(-1).-1所代表的含义是我们不用亲自去指定这一维的大小,函数会自动进行计算,但是列表中只能存在一个-1。(如果存在多个-1,就是一个存在多解的方程)
tf.matmul(): 将矩阵a乘以矩阵b,生成a * b。
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None)
用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。、
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
第四个参数name: 操作的名称;
第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;
tf.random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None):
shape:一维整数张量或Python副本。输出张量的形状。
minval:dtype类型的0-D张量或Python值;生成的随机值范围的下限;设为为0。
maxval:dtype类型的0-D张量或Python值。要生成的随机值范围的上限。如果dtype是浮点,则默认为1。
dtype:输出的类型:float16,float32,float64,int32,orint64。
seed:一个Python整数。用于为分布创建一个随机种子。查看tf.set_random_seed行为。
tf.split( value, num_or_size_splits, axis=0, num=None, name='split' ):把一个张量划分成几个子张量。value:准备切分的张量。num_or_size_splits:准备切成几份。axis : 准备在第几个维度上进行切割
tf.abs():就是求数值的绝对值
tf.ones_like(tensor) :该操作返回一个具有和给定tensor相同形状(shape)和相同数据类型(dtype),但是所有的元素都被设置为1的tensor
tf.clip_by_value(t, clip_value_min, clip_value_max, name=None):基于定义的min与max对tesor数据进行截断操作,目的是为了应对梯度爆发或者梯度消失的情况
Numpy.random.shuffle与.permutation:函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序);区别在于shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。而permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。
numpy.mod():计算输入数组中相应元素的相除后的余数
tf.nn.conv2d_transpose(value,filter,output_shape,strides,padding,data_format, name):
* value的格式为[batch, he* value的格式为[batch, height, width, in_channels],height和width是用来计算输出尺寸用到的最重要的两个参数,表示输入该层feature map的高度和宽度,典型的NHWC格式;
* filter的格式为[height, width, output_channels, input_channels],务必注意这里的channel数是输出的channel数在前,输入的channel数在后。
* output_shape是一个1-D张量,传入的可以是一个tuple或者list,在不指定data_format参数的情况下,格式必须为NHWC。注意:这里的C要与filter中的output_channels保持一致;
* strides的格式为一个整数列表,与conv2d方法在官方文档中写的一样,必须保证strides[0]=strides[3]=1,格式为[1, stirde, stride, 1];
* padding依然只有'SAME'和'VALID';ight, width, in_channels],height和width是用来计算输出尺寸用到的最重要的两个参数,表示输入该层feature map的高度和宽度,典型的NHWC格式;
* filter的格式为[height, width, output_channels, input_channels],务必注意这里的channel数是输出的channel数在前,输入的channel数在后。
* output_shape是一个1-D张量,传入的可以是一个tuple或者list,在不指定data_format参数的情况下,格式必须为NHWC。注意:这里的C要与filter中的output_channels保持一致;
* strides的格式为一个整数列表,与conv2d方法在官方文档中写的一样,必须保证strides[0]=strides[3]=1,格式为[1, stirde, stride, 1];
* padding依然只有'SAME'和'VALID';
f.nn.drop(x, keep_prob, noise_shape=None, seed=None,name=None):防止模型训练过程中的过拟合问题
x: 输入值; keep_prob: float类型,每个元素被保留下来的概率; noise_shape: 一个1维的int32张量,代表了随机产生“保留/丢弃”标志的shape
tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None,labels=None, logits=None, name=None):这个函数的输入是logits和targets,logits就是神经网络模型中的 W * X矩阵,注意不需要经过sigmoid,而targets的shape和logits相同,就是正确的label值,例如这个模型一次要判断100张图是否包含10种动物,这两个输入的shape都是[100, 10]。