更改为TensorFlow Cifar10示例时精度较低

时间:2016-02-08 11:09:07

标签: machine-learning computer-vision tensorflow image-recognition object-detection

我正在尝试修改TensorFlow中Cifar10提供的网络结构。通常,我在第一个卷积层(conv1)之后添加了另一个卷积层(conv12)。无论我如何设置过滤器(我尝试了所有1x1,3x3,5x5)以及是否使用重量衰减,使用新图层会将精度降低到10%以下。这相当于Cifar10中的随机猜测,因为有10个类。

代码结构如下,除了将输入图像的大小设置为48x48(而不是24x24)之外,我不修改cifar的任何其他部分。我猜输入大小无关紧要。

请注意,conv12是深度卷积图层,因为我想在conv1图层之后添加一个线性图层,以便最小化对原始代码的更改。这样做我希望准确性应该与原始版本相似,但它会降低到10%左右。 (我也尝试了一个普通的卷积层,但它也不起作用。)

  with tf.variable_scope('conv1') as scope:
    kernel1 = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64],
                                         stddev=1e-4, wd=0.0)
    conv_1 = tf.nn.conv2d(images, kernel1, [1, 1, 1, 1], padding='SAME')
    biases1 = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
    bias1 = tf.nn.bias_add(conv_1, biases1)
    conv1 = tf.nn.relu(bias1, name=scope.name)
    _activation_summary(conv1)


  with tf.variable_scope('conv12') as scope:
    kernel12 = _variable_with_weight_decay('weights', shape=[1, 1, 64, 1],
                                         stddev=1e-4, wd=0.0)
    #conv_12 = tf.nn.conv2d(conv1, kernel12, [1, 1, 1, 1], padding='SAME')
    conv_12 = tf.nn.depthwise_conv2d(conv1, kernel12, [1, 1, 1, 1], padding='SAME')
    biases12 = _variable_on_cpu('biases', [64], tf.constant_initializer(0.0))
    bias12 = tf.nn.bias_add(conv_12, biases12)        
    conv12 = tf.nn.relu(bias12)
    _activation_summary(conv12)

  pool1 = tf.nn.max_pool(conv12, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
                     padding='SAME', name='pool1')
.....

有人可以告诉我代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

你的第二个卷积:

kernel12 = _variable_with_weight_decay('weights', shape=[1, 1, 64, 1]

采用前一层的64位深度输出并将其压缩到深度为1的输出。这似乎不会与您之后的任何代码(如果conv2中的shape=[1, 1, 64, 64])相匹配,那么肯定不会有效,因为那个人希望深度 - 64输入。)

也许你真的想要from BeautifulSoup import BeautifulSoup from HTMLParser import HTMLParser from os import listdir from os import chdir def main(): # move into the nohead directory chdir('nohead') # get a list of the files in nohead filenames=listdir('.') for files in filenames: soup = BeautifulSoup (open(files)) bottom = soup.findAll("footer") nothing = "" bottom.replaceWith(nothing) # and then I'd like to save each separate html file with its <footer> removed if __name__ == "__main__": main() ,这只会在你的模型中添加一个额外的“初始式”1x1卷积层?