Tensorflow中卷积神经网络之卷积层
程序员文章站
2022-06-26 11:30:25
...
卷积层:与传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块。(试图将神经网络中的每一小块进行更加深入地分析从中得到抽象程度更高的特征)
在卷积层中:1.过滤器(filter)处理的节点矩阵的长和宽由人工指定;2.处理得到的单位节点矩阵的深度--过滤器的深度;
(过滤器的尺寸是指过滤器输入节点矩阵的大小;深度是指输出单位节点矩阵的深度)
在卷积层结构中的前向传播过程是通过一个过滤器从神经网络当前层的左上角移动到右下角,并且计算每一个对应的单位矩阵而得到的。
卷积层中过滤器前向传播过程实质就是为通过左侧小矩阵中的节点计算出右侧单位矩阵中节点的过程。
filter_weight = tf.get_variable('weights', [5,5,3,16], initializer = tf.truncated_normal_initializer(stddev=0.1)) #创建过滤器的权重变量和偏执项变量,声明一个 思维矩阵,前面俩维度代表过滤器的尺寸,第三 个维度表示当前层的深度,第四个维度表示过滤器的深度
biases = tf.get_variable('biases', [16], initializer= tf.constant_initializer(0.1))
conv = tf.nn.conv2d(input, filter_weight, strides=[1,1,1,1], padding='SAME')#第一个维度表示对应的输入batch,第二个参数为卷积层权重,第三个参数为不同维度上的 步长,最后一个参数为填充(SAME表示添加全为0,VALID表示不添加)
bias=tf.nn.bias_add(conv, biases)#为每一个节点加上偏执项,不能简单实用加法进行偏执项,需要通过tf.nn.bias_add函数,
actived_conv=tf.nn.relu(bias)
卷积层前向传播过程样例
outL=[inLength/strideLength]
outW=[inWidth/strideWidth]
outL表示输出层矩阵的长度,等于输入层矩阵长度除以长度方向上的步长的向上取整值。
outW表示输出层矩阵的宽度,等于输入层矩阵宽度除以宽度方向上的步长的向上去整值。
在不使用全0填充的情况下:结果矩阵的大小为:
outL=[(inL-filterL+1)/strideL]
outW=[(inW-filterL+1)/strideW)]
L表示长度,W表示宽度。
上一篇: Pytorch基础
下一篇: 卷积神经网络:二维卷积层
推荐阅读
-
卷积神经网络(CNN)在无人驾驶中的应用
-
Python通过TensorFlow卷积神经网络实现猫狗识别
-
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
-
Python神经网络TensorFlow基于CNN卷积识别手写数字
-
tensorflow2.0之keras实现卷积神经网络
-
tensorflow卷积神经网络-【老鱼学tensorflow】
-
手写数字识别 ----卷积神经网络模型官方案例注释(基于Tensorflow,Python)
-
TensorFlow 实战之实现卷积神经网络的实例讲解
-
深度之眼Pytorch打卡(十五):Pytorch卷积神经网络部件——转置卷积操作与转置卷积层(对转置卷积操作全网最细致分析,转置卷积的stride与padding,转置与反卷积名称论证)
-
【Tensorflow】人脸128个关键点识别基于卷积神经网络实现