我正在尝试修改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')
.....
有人可以告诉我代码有什么问题吗?
答案 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卷积层?