tensorflow手册cifar10.py(alexnet,卷积神经网络)的一些理解

以下只写一些我花了点时间才理解的东西:

       1、卷积tf.nn.conv2d()函数的理解:它其中有第二个参数是[filter_height, filter_width, in_channels, out_channels]。代码中第二次卷积,输入是64,输出也是64。他的意思是本层的每个卷积核都要对之前生成的64个图同时进行卷积。之前生成的64个特征图已经对一些简单特征进行了提取,这时再一次性卷积就可以对之前的特征进行自由组合,以发现更复杂的特征。

        2、 tf.train.shuffle_batch() 这里的min_after_dequeue越大,数据越乱。我最开始想,这个值太大,洗出来的牌难道只从数据集的很小一部分选择吗?其实洗牌是个动态过程,从队列里发牌的同时,新牌也在不断往里加,所以这个池子越大越好。

        3、为什么是白化而不是锐化?我开始在想,明明要提取特征,难道不应该让边缘锐化吗,让特征更明显?这里白化的作用其实跟前几篇文章中处理MNIST数据集,数据归一化一样,数太大了是算不出结果的。不能因为颜色越深,数值越大,响应就大。

         4、为什么3*3卷积核效果好?我还看了处理视频的卷积神经网络,也是3*3的效果好。我认为这是因为卷积神经网络就是靠边界、轮廓来识别物体的,3*3就够了。CNN是否可以提取颜色特征 ?可以。一个三维的卷积核,由后两维组成的二维矩阵,其中的值如果都是一样的,这种卷积核是对颜色敏感的。

         5、关于图像处理,我想到max pooling也可以缩小图像尺寸,这就不必借助其他库了。而且池化可以减少计算量。

         6、lr 是用于设定学习率的,那个函数是分开写的 : tf.train.GradientDescentOptimizer(lr).compute_gradients(total_loss)。

         7、add_to_collection() 这个函数在循环里,难道每训练一轮,loss都要被加入集合losses吗?这样losses集合里就填满了历史数据。我專門编程验证了一下,如果放在sess.run(opt)里,每一次循环,losses集合会被清空,如果把他当一般的集合去用,即使放在循环里,也不会被清空。

         8、这个例子没有用到adam优化,我只分享一个写得好的文章帮助理解这个稍显复杂的算法:  https://www.jianshu.com/p/aebcaf8af76e
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值