tensorflow leanr

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()

方便共享变量,必须和reusetf.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相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维

第三个参数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]
 


 


 

猜你喜欢

转载自blog.csdn.net/fuge92/article/details/84531133