tf.get_variable(name, shape, initializer)
(1)name:变量名称;
(2)shape:变量的维度;
(3)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:满足均匀分布,但不影响输出数量级的随机值
example = tf.get_variable(name='example', shape=[2,3], initializer=tf.random_normal_initializer(mean=0, stddev=1))
tf.Variable(initial_value,trainable=True,collections=None, validate_shape=True, name=None)
tf.Variable(tf.random_normal((2,3),stddev=1,seed=1))
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
(1)input:4维Tensor,要求是具有[batch, in_height, in_width, in_channels]这样的shape,含义为[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],要求类型为float32和float64其中之一。比如在输入层,input[0,:,:,:]表示第一张图片,input[1,:,:,:]表示第二张图片,以此类推。
(2)filter:4维Tensor,相当于CNN中的卷积核,要求具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维。
(3)strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4
(4)padding:string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。”SAME”是考虑边界,不足的时候用0去填充周围,”VALID”则不考虑
(5)use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true
(6)name:
结果返回一个Tensor,这个输出,就是我们常说的feature map,shape仍然是[batch, new_height, new_width, channels]这种形式
filter_weight = tf.get_variable('weights', [2, 2, 1, 1], initializer = tf.constant_initializer([[1, -1],[0, 2]]))
x = tf.placeholder('float32', [1, None, None, 1])
conv = tf.nn.conv2d(x, filter_weight, strides = [1, 2, 2, 1], padding = 'SAME')
tf.nn.max_pool(value, ksize, strides, padding, name=None)
(1)value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape。
(2)ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1。
(3)strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]。
(4)padding:string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。”SAME”是考虑边界,不足的时候用0去填充周围,”VALID”则不考虑
(5)name:
结果返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式
tf.nn.max_pool(tensor,ksize[1,2,2,1],strides=[1,2,2,1],padding='SAME')