Tensorfly_最专注的机器学习社区,tensorflow研究者社区

查看: 3933|回复: 2

tensorflow的卷积与池化

[复制链接]

2

主题

4

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2016-5-30 07:16:58 | 显示全部楼层 |阅读模式
转载,出自另一个跟笔者有同样疑惑的网友,希望在知乎找到答案。
以下是转载内容:
对比学习极客学院中tensorflow中的深入MNIST与本论坛中的matlab实现源码,有几个问题不明,想请教各位高人:
1. mnist问题中,输入均为一个28*28的图形,tensorflow说明中进行处理时,经过一层卷积和池化后,卷积在每个5x5的patch中算出32个特征。而在第二层卷积中,每个5*5的patch会得到64个特征。不知道这个32和64是如何得出的?matlab实现中,第一层和第二层分别使用的是6个特征和12个特征。这有什么区别或讲究呢?
2. tensorflow中,密集连接层时,原文说图片尺寸减小到7*7,不清楚这个7*7是如何得出的?我的计算如下,输入为28*28,第一层卷积使用5*5的patch,则第一个隐层输出为24*24,用2*2进行池化后得到12*12的池化层;再次用5*5的patch进行卷积时,将得到8*8的第二个隐层。此时,若再次池化,则应该得到4*4的输出。请问这个7*7是如何得出的呢?
3. tensorflow中模型迭代训练时,源代码中迭代学习了2万次,每次提取50个样本,可是,根据mnist_data的有关说明,似乎总共才6万个样本,2万次每次50个样本,不是已经远超样本总值了吗?这样是否会导致同一个样本的重复训练?而matlab的示例中,似乎是对所有的这6万个样本进行多次训练。训练次数从1-10次不等。
4. tensorflow中使用dropout来避免过度拟合,请问其作用和原理是什么呢?
5. tensorflow中进行2万次迭代训练,但过程中发现准确率会出现反复,比如800次训练的准确率为98%,但900次训练的准确率则返回到96%,请问这个迭代的次数如何确定较好呢?
回复

使用道具 举报

2

主题

4

帖子

20

积分

新手上路

Rank: 1

积分
20
 楼主| 发表于 2016-5-30 10:58:18 | 显示全部楼层
怎么都没有人回复的?这里不是tensorflow的中文社区论坛吗?没有人跟我有一样的疑惑?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2016-6-16 18:06:52 | 显示全部楼层
1、输入时一幅二值图像,只有一个通道,所以输入层只有一幅图像,第1个卷积层:
     W_conv1 = weight_variable([5, 5, 1, 32]),表示1个输入层,然后有32个输出层,相当于32个特征
    第二个卷积层接第一个卷积层,第一个卷积层有32个输出,所以第二个卷积层有32个输入
     W_conv2 = weight_variable([5, 5, 32, 64]),表示32个输入层,然后有64个输出层,相当于了64个特征
2、卷积采用‘SAME’模式,对边界进行填充,原始的是28*28,一次卷积之后折半,变成14*14;再做一次卷积变成7*7.
def conv2d(x, W):
  return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
'SAME' 相当于 padding = floor(ksize/2)
'VALID' 相当于 padding = 0
你所说的应该是丢弃边界情况
3. 建议你了解一下batch-随机梯度下降法算法。取样并不是你说的那样,是有重的。
4. dropout请看论文,直观的感觉:设keep=0.5,那么每次随机取一半的权值参与训练,学习到的特征具有广泛性,这样可以避免过拟合
5.这时候需要使用校验集,选定最佳的参数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Tensorflow中文社区  

GMT+8, 2017-6-24 18:49 , Processed in 0.021190 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表