卷积神经网络的调用函数
con2d(input, filter_wight, strides, padding, use_cudnn_on_gpu = True, data_formate = "NHWC", name = None)
{input = [batch, in_height, out_width, channel], 输入矩阵的尺度
filter_weight = [filiter_hight, filter_width, in_channels, out_channels]:卷积层的权重
data_fornate = "NHWC": N:batch_size, H:height, W: width, C: channel",输出的格式
strides =[1,1,1,1]= [batch,height, width, channel],不同维度上的步长,一般第一个第四个参数设置为1
padding = "same", using zeros padding boudry:补边的方法}
函数的操作步骤如下
- 将滤波器会自动平滑成[filter_hetight*filter_width*in_channels, output_channel]
- 从输入中提取图像的patches, 成virtual tensor of shape [batch, out_height, out_width, filter_height* filter_width * in_channels]
- 对于每个patch, 右乘滤波器矩阵和图像patch 向量
注意点biase 偏置。和全连接网络直接加上是不同的。
需要用到函数tf.nn.bias_add(conv, biases)
这是因为每个维度都需要加偏置,但是偏置的维度只有1.