学习用tensorflow实现卷积神经网络中的卷积层随笔

分享一个我的公众号,最近突然想玩公众号,之前做过一段时间前端开发,考虑到现在应用程序越来越多,未来社会一定是一个充满“只有你想不到,没有你做不到”的App的世界!而微信小程序又给我们这群喜爱开发的童鞋们提供了友好的入门机会,因此,不如就在当下,开始一步一步的学习并开发自己的小程序吧。这是我的公众号:目的是和大家讨论小程序开发,同时也带着开发小白入门设计开发微信小程序,来吧,加入!

正文:

 

1、因为交叉熵一般会与softmax回归一起使用,所以TensorFlow对这两个功能进行了统一的封装,并提供了tf.nn.softmax_cross_entropy_with_logits函数。比如可以直接通过下面的代码来实现使用了softmax回归之后的交叉熵损失函数:

cross_entropy = tf.nn.softmax_cross_entropy_with_logits(y, y_)   # 其中y为预测值,y_为真实值

这样通过一个命令就可以得到使用了Softmax回归之后的交叉熵。

在只有一个正确答案的分类问题中,tensorflow提供了tf.nn.sparse_softmax_cross_entropy_with_logits函数来进一步加速计算过程。

2、TensorFlow中训练一个卷积神经网络的流程和训练一个全连接网络没有任何区别,卷积神经网络和全连接网络的唯一区别就是在于神经网络中相邻两层的链接方式。(全连接层相邻两层之间的节点都有边的链接,于是一般会将每一层全连接层中的节点组织成一列,这样方便显示链接结构;而对于卷积神经网络,相邻两层之间只有部分节点相连,为了展示每层神经元的维度,一般会将每层卷积层的节点组织成一个三维矩阵)

3、卷积层结构的前向传播过程就是通过将一个过滤器从神经网络当前层的左上角移动到右下角,并且在移动中计算每一个对应单位矩阵得到的值。

所以当过滤器的大小不为1*1时,卷积层的前向传播得到的矩阵尺寸要小于当前层矩阵的尺寸。

在卷积神经网络中,每一个卷积层中使用的过滤器中的参数都是一样的。这是卷积神经网络一个非常重要的性质。

假设输入层矩阵的维度是32*32*3,假设第一层卷积层使用尺寸为5*5,深度为16的过滤器,那么这个卷积层的参数个数为5*5*3*16+16=1216个,远小于全连接层的参数个数。

而且卷积层的参数个数和图片的大小无关,它只和过滤器的尺寸、深度以及当前层节点矩阵深度有关。这使得卷积神经网络可以很好的扩展到更大的图像数据上。

4、通过tf.get_variable的方式创建过滤器的权重变量和偏置变量:

权重变量: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.contant_initializer(0.1))

5、tf.nn.conv2d提供了一个非常方便的函数来实现卷积层前向传播的算法。下面就来介绍一下这个函数:

这个函数的第一个输入为当前层 的节点矩阵。注意这个矩阵是一个四维的矩阵,后面三个维度对应一个节点矩阵,第一维对应一个输入batch。比如在输入层,input[0,:,:,:]表示第一张图片……

tf.nn.conv2d第二个参数提供了卷积层的权重,第三个参数为不同维度上的步长。虽然第三个参数提供的是一个长度为4的数组,但是第一维和最后一维的数字要求一定是1.这是因为卷积层的步长只对矩阵的长和宽有效。最后一个参数是填充(padding),TensorFlow中提供SAME或者VALID两种选择,其中SAME表示添加全0填充,VALID表示不添加。 conv = tf.nn.con2d(input, filter_weight, strides=[1,1,1,1], pading='SAME')

6、tf.nn.bias_add提供了一个方便的函数给每一个节点加上偏置项。(当深度为1时,偏置项只有一个数)

bias = tf.nn.bias_add(conv, biases)

# 将计算结果通过ReLU去线性化:actived_conv = tf.nn.relu(bias)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值