TensorFlow中CNN/卷积神经网络算法的理解

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

主要是理解input 和filter的结构

input: [batch, in_height, in_width, in_channels]

in_height, in_width 表示图片的宽度和高度,一般是以像素为单位;
batch 表示这一批数据中有多少张图片;
in_channels 表示每张图片的通道,灰度图只有1个channel,rgb图有三个channel,分别是rgb值,rgba图有四个channel,最后一个a表示透明度。

filter:[filter_height, filter_width, in_channels, out_channels]

filter就是卷积核,一般的教程中作示意的时候卷积核都认为是二维的,但实际上如果不是灰度图,那么输入的图片就不是二维的。
filter_height, filter_width 分别代表 卷积核的高度和宽度,一般高度和宽度是一样的;
in_channels 表示输入图片的通道数,就是input 中的n_channels,两个必须是一样的,卷积的时候就是从图像[in_height, in_width, in_channels]中抽取[filter_height, filter_width, in_channels],和卷积核[filter_height, filter_width, in_channels], 两个三维的张量做点积,产生一个值,就表示卷积生成的图像中的一个像素点
out_channels 是生成的卷积后图像的深度,实际上也是卷积核的个数,也是生成的feature的个数。

这样理解起来应该就没有问题了。

    原文作者:神经网络算法
    原文地址: https://blog.csdn.net/zhaoying9105/article/details/72841961
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞