np.random.rand(d0,d1,d2……dn)
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
应用:在深度学习的Dropout正则化方法中,可以用于生成dropout随机向量(dl),例如(keep_prob表示保留神经元的比例):dl = np.random.rand(al.shape[0],al.shape[1]) < keep_prob
tf.zeros( shape, dtype=tf.float32, name=None )
tf.random_uniform(shape,
minval=0,
maxval=None,
dtype=dtypes.float32,
seed=None,
name=None)
tf.multiply()两个矩阵中对应元素各自相乘
tf.multiply(x, y, name=None)
参数:
x: 一个类型为:half, float32, float64, uint8, int8, uint16, int16, int32, int64, complex64, complex128的张量。
y: 一个类型跟张量x相同的张量。
返回值: x * y element-wise.
注意:
(1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。
(2)两个相乘的数必须有相同的数据类型,不然就会报错。
tf.matmul()将矩阵a乘以矩阵b,生成a * b
tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
参数:
a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
b: 一个类型跟张量a相同的张量。
transpose_a: 如果为真, a则在进行乘法计算前进行转置。
transpose_b: 如果为真, b则在进行乘法计算前进行转置。
adjoint_a: 如果为真, a则在进行乘法计算前进行共轭和转置。
adjoint_b: 如果为真, b则在进行乘法计算前进行共轭和转置。
a_is_sparse: 如果为真, a会被处理为稀疏矩阵。
b_is_sparse: 如果为真, b会被处理为稀疏矩阵。
name: 操作的名字(可选参数)
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。
tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值
reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
第四个参数name: 操作的名称;
第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;
tf.constant( value, dtype=None, shape=None, name='Const', verify_shape=False )
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
shape: 输出张量的形状,必选 mean: 正态分布的均值,默认为0 stddev: 正态分布的标准差,默认为1.0 dtype: 输出的类型,默认为tf.float32 seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样 name: 操作的名称
tf.argmax(input, dimension, name=None)
dimension=0 按列找
dimension=1 按行找
tf.argmax()返回最大数值的下标
通常和tf.equal()一起使用,计算模型准确度
tf.cast()
cast( x, dtype, name=None )
将x的数据格式转化成dtype.例如,原来x的数据格式是bool,
那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以
tf.Variable(<initial - value>,name=<optional - name>)
此函数用于定义图变量。生成一个初始值为initial - value的变量。
tf.get_variable(name,shape,dtype,initializer,trainable)
此函数用于定义图变量。获取已经存在的变量,如果不存在,就新建一个
参数:
- name:名称
- shape:数据形状。
- dtype:数据类型。常用的tf.float32,tf.float64等数值类型
- initializer:初始化值。可以使用各种初始化方法
- trainable:是否训练变量。bool类型:True训练,False不训练
推荐使用:tf.get_variable()
方便共享变量,必须和reuse和tf.variable_scope()配合使用
tf.contrib.layers.xavier_initializer, xavier_initializer( uniform=True, seed=None, dtype=tf.float32 ) 该函数返回一个用于初始化权重的初始化程序 “Xavier”
这个初始化器是用来保持每一层的梯度大小都差不多相同
tf.get_variable(name, shape, initializer): name就是变量的名称,shape是变量的维度,initializer是变量初始化的方式,初始化的方式有以下几种:
tf.constant_initializer:常量初始化函数
tf.random_normal_initializer:正态分布
tf.truncated_normal_initializer:截取的正态分布
tf.random_uniform_initializer:均匀分布
tf.zeros_initializer:全部是0
tf.ones_initializer:全是1
tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是
[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意
这是一个4维的Tensor,要求类型为float32和float64其中之一
第二个参数filter:相当于CNN中的卷积核,
它要求是一个Tensor,具有
[filter_height, filter_width, in_channels, out_channels]这样的shape
,具体含义是[卷积核的高度,
],要求类型与参数input相同,有一个地方需要注意,第三维卷积核的宽度,图像通道数,卷积核个数
,就是参数input的第四维in_channels
第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4
第四个参数padding:string类型的量,只能是"SAME","VALID"其中之一,这个值决定了不同的卷积方式
假设一个2x3矩阵,max_pooling窗口2x2,两个维度步长strides=2,
SAME和VALID的区别所在:由于步长为2,当向右滑动两步之后,VALID方式发现余下的窗口不到2×2所以直接将第三列舍弃,而SAME方式并不会把多出的一列丢弃,但是只有一列了不够2×22×2 ,怎么办?填充!
第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true
结果返回一个Tensor,这个输出,就是我们常说的feature map,shape仍然是
[batch, height, width, channels]
这种形式。
tf.nn.bias_add(value,bias,name=None)
这个函数的作用是将偏差项bias加到value上面,bias必须是一维的
tf.nn.relu(features, name = None)
这个函数的作用是计算激活函数 relu,即 max(features, 0)。即将矩阵中每行的非最大值置0。
tf.nn.max_pool(value, ksize, strides, padding, name=None)
第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape
第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
第四个参数padding:和卷积类似,可以取'VALID' 或者'SAME'
返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式
tf.nn.avg_pool(value,ksize,strides,padding,data_format='NHWC',name=None) #计算池化区域中元素的平均值
#value:是一个四维的张量,数据维度是[batch, height, width, channels]
#ksize:是一个长度不小于4的整型数组,每一位上的值对应于输入数据张量中每一维的窗口对应值
#strides:一个长度不小于4的整型数组,该参数指定滑动窗口在输入数据张量每一维上的步长
#padding:一个字符串, 取值为SAME或者VALID
#data_format:'NHWC'代表输入张量维度的顺序,N为个数,H为高度,W为宽度,C为通道数
#name:为这个操作取一个名字;
np.vstack():在竖直方向上堆叠
np.hstack():在水平方向上平铺
import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
print np.vstack((a,b))
print np.hstack((a,b))
[[1 2 3]
[4 5 5]]
[1 2 3 4 5 6]