Tensorflow学习之实现卷积神经网络(二)

来源:互联网 发布:培训机构做网络推广 编辑:程序博客网 时间:2024/05/21 10:45

本次使用cifar10数据集,这是一个经典的数据集,包含60000张32x32的彩色图像,其中训练集50000张,测试集10000张,标注为10类,每一类图片6000张,10类分别为airplane、automobile、bird、cat、deer、dog、frog、horse、ship和truck。
下面利用一个5层的神经网络,其中两层卷积层,三层全连接层来训练测试这个数据集。

 from tensorflow.examples.tutorials.cifar10 import cifar10from tensorflow.examples.tutorials.cifar10 import cifar10_inputimport tensorflow as tfimport numpy as npimport timemax_steps = 3000batch_size = 128data_dir = "/Users/new/Downloads/cifar-10-batches-bin"#定义初始化权重函数#但是给权重加一个L2正则化处理,用来减轻过拟合,一般来说L1正则会制造稀疏的特征,大部分无用特征的权重会被置为0,而L2正则会让特征的权重不过大,使得特征的权重比较平均。def variable_with_weight_loss(shape,stddev,w1):    var = tf.Variable(tf.truncated_normal(shape,stddev=stddev))    if w1 is not None:        weight_loss = tf.multiply(tf.nn.l2_loss(var),w1,name='weight_loss')        tf.add_to_collection('losses',weight_loss)    return varcifar10.maybe_download_and_extract() #'''数据增强的常用方法 # tf.image.random_flip_left_right() 水平翻转 #tf.image.random_flip_up_down()    垂直翻转 #tf.random_crop()  随机裁剪 #tf.image.random_brightness()  设置随机亮度和对比度 #tf.image.per_image_standardization()  标准化(减去均值除以方差,保证数据零均值,方差为1)'''images_train,labels_train = cifar10_input.distorted_inputs(data_dir = data_dir,batch_size = batch_size)images_test,labels_test = cifar10_input.inputs(eval_data = True,data_dir=data_dir,batch_size=batch_size)image_holder = tf.placeholder(tf.float32,[batch_size,24,24,3])label_holder = tf.placeholder(tf.int32,[batch_size]) #创建第一个卷积层weight1 = variable_with_weight_loss(shape = [5,5,3,64],stddev=5e-2,w1=0.0)#5x5,channel = 3 ,64个kernel1 = tf.nn.conv2d(image_holder,weight1,[1,1,1,1],padding='SAME')bias1 = tf.Variable(tf.constant(0.0,shape=[64]))conv1 = tf.nn.relu(tf.nn.bias_add(kernel1,bias1))pool1 = tf.nn.max_pool(conv1,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')norm1 = tf.nn.lrn(pool1,4,bias=1.0,alpha=0.001/9.0,beta=0.75) #第二个卷积层weight2 = variable_with_weight_loss(shape = [5,5,64,64],stddev=5e-2,w1=0.0) #5x5,channel = 3 ,64个kernel2 = tf.nn.conv2d(norm1,weight2,[1,1,1,1],padding='SAME')bias2 = tf.Variable(tf.constant(0.0,shape=[64]))conv2 = tf.nn.relu(tf.nn.bias_add(kernel2,bias2))norm2 = tf.nn.lrn(conv2,4,bias=1.0,alpha=0.001/9.0,beta=0.75)pool2 = tf.nn.max_pool(norm2,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')#全连接层1reshape = tf.reshape(pool2,[batch_size,-1])dim = reshape.get_shape()[1].valueweight3 = variable_with_weight_loss(shape=[dim,384],stddev=0.04,w1=0.004)bias3 = tf.Variable(tf.constant(0.1,shape = [384]))local3 = tf.nn.relu(tf.matmul(reshape,weight3)+bias3) #全连接层2weight4 = variable_with_weight_loss(shape=[384,192],stddev=0.04,w1=0.004)bias4 = tf.Variable(tf.constant(0.1,shape = [192]))local4 = tf.nn.relu(tf.matmul(local3,weight4)+bias4)#全连接层3weight5 = variable_with_weight_loss(shape=[192,10],stddev=1/192.0,w1=0.0)bias5 = tf.Variable(tf.constant(0.0,shape = [10]))logits = tf.nn.relu(tf.matmul(local4,weight5)+bias5)#计算lossdef loss(logits,labels):    labels = tf.cast(labels,tf.int64)    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,labels=labels,name='cross_entropy_per_example')    cross_entropy_mean = tf.reduce_mean(cross_entropy,name='cross_entropy')    tf.add_to_collection('losses',cross_entropy_mean)    return tf.add_n(tf.get_collection('losses'),name='total_loss')loss = loss(logits,label_holder)#选择优化器train_op = tf.train.AdamOptimizer(1e-3).minimize(loss)top_k_op = tf.nn.in_top_k(logits,label_holder,1)sess = tf.InteractiveSession()tf.global_variables_initializer().run()tf.train.start_queue_runners()#开始训练for step in range(max_steps):    start_time = time.time()    image_batch,label_batch = sess.run([images_train,labels_train])    _,loss_value = sess.run([train_op,loss],feed_dict={image_holder:image_batch,label_holder:label_batch})    duration = time.time() - start_time    if step % 10 == 0:        examples_per_sec = batch_size / duration        sec_per_batch = float(duration)        format_str = ('step %d,loss = %.2f(%.1f examples/sec; %.3f sec/batch)')        print(format_str % (step,loss_value,examples_per_sec,sec_per_batch))#测试num_examples = 10000import mathnum_iter = int(math.ceil(num_examples / batch_size)) #math.ceil()为向上取整true_count = 0total_sample_count = num_iter * batch_sizestep = 0while step < num_iter:    image_batch,label_batch = sess.run([images_test,labels_test])    predictions = sess.run([top_k_op],feed_dict={image_holder:image_batch,label_holder:label_batch})    true_count += np.sum(predictions)    step += 1precision = true_count/total_sample_countprint('precision @ 1 = %.3f' % precision)
/usr/local/Cellar/anaconda/bin/python /Users/new/Documents/JLIFE/procedure/python_tr/py_train/train1.pyFilling queue with 20000 CIFAR images before starting to train. This will take a few minutes.2017-08-21 17:40:15.440666: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.2017-08-21 17:40:15.440682: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.2017-08-21 17:40:15.440686: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.2017-08-21 17:40:15.440691: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.step 0,loss = 4.68(26.0 examples/sec; 4.916 sec/batch)step 10,loss = 3.82(171.2 examples/sec; 0.748 sec/batch)step 20,loss = 3.19(169.3 examples/sec; 0.756 sec/batch)step 30,loss = 2.89(172.5 examples/sec; 0.742 sec/batch)step 40,loss = 2.58(149.5 examples/sec; 0.856 sec/batch)step 50,loss = 2.54(171.6 examples/sec; 0.746 sec/batch)step 60,loss = 2.42(201.0 examples/sec; 0.637 sec/batch)step 70,loss = 2.30(216.9 examples/sec; 0.590 sec/batch)step 80,loss = 2.29(215.9 examples/sec; 0.593 sec/batch)step 90,loss = 2.23(214.2 examples/sec; 0.598 sec/batch)step 100,loss = 2.23(211.5 examples/sec; 0.605 sec/batch)step 110,loss = 2.27(211.3 examples/sec; 0.606 sec/batch)step 120,loss = 2.15(216.4 examples/sec; 0.591 sec/batch)step 130,loss = 2.14(216.5 examples/sec; 0.591 sec/batch)step 140,loss = 2.23(214.9 examples/sec; 0.596 sec/batch)step 150,loss = 2.16(213.3 examples/sec; 0.600 sec/batch)step 160,loss = 2.13(214.6 examples/sec; 0.596 sec/batch)step 170,loss = 2.10(218.0 examples/sec; 0.587 sec/batch)step 180,loss = 2.11(217.0 examples/sec; 0.590 sec/batch)step 190,loss = 2.20(215.8 examples/sec; 0.593 sec/batch)step 200,loss = 2.07(217.4 examples/sec; 0.589 sec/batch)step 210,loss = 2.25(218.3 examples/sec; 0.586 sec/batch)step 220,loss = 2.07(219.4 examples/sec; 0.583 sec/batch)step 230,loss = 2.09(218.0 examples/sec; 0.587 sec/batch)step 240,loss = 2.23(218.6 examples/sec; 0.585 sec/batch)step 250,loss = 2.06(215.3 examples/sec; 0.595 sec/batch)step 260,loss = 2.15(216.5 examples/sec; 0.591 sec/batch)step 270,loss = 2.10(216.2 examples/sec; 0.592 sec/batch)step 280,loss = 2.12(216.8 examples/sec; 0.590 sec/batch)step 290,loss = 2.21(220.4 examples/sec; 0.581 sec/batch)step 300,loss = 2.07(220.2 examples/sec; 0.581 sec/batch)step 310,loss = 2.11(219.8 examples/sec; 0.582 sec/batch)step 320,loss = 2.15(218.4 examples/sec; 0.586 sec/batch)step 330,loss = 2.18(218.4 examples/sec; 0.586 sec/batch)step 340,loss = 2.06(221.1 examples/sec; 0.579 sec/batch)step 350,loss = 2.25(221.1 examples/sec; 0.579 sec/batch)step 360,loss = 2.21(221.4 examples/sec; 0.578 sec/batch)step 370,loss = 2.15(216.3 examples/sec; 0.592 sec/batch)step 380,loss = 2.12(216.4 examples/sec; 0.591 sec/batch)step 390,loss = 2.14(219.2 examples/sec; 0.584 sec/batch)step 400,loss = 2.17(218.2 examples/sec; 0.587 sec/batch)step 410,loss = 2.13(216.3 examples/sec; 0.592 sec/batch)step 420,loss = 2.06(216.6 examples/sec; 0.591 sec/batch)step 430,loss = 2.14(218.1 examples/sec; 0.587 sec/batch)step 440,loss = 2.04(217.6 examples/sec; 0.588 sec/batch)step 450,loss = 2.16(216.3 examples/sec; 0.592 sec/batch)step 460,loss = 2.03(212.9 examples/sec; 0.601 sec/batch)step 470,loss = 2.11(217.0 examples/sec; 0.590 sec/batch)step 480,loss = 2.09(217.6 examples/sec; 0.588 sec/batch)step 490,loss = 2.05(218.5 examples/sec; 0.586 sec/batch)step 500,loss = 2.04(217.3 examples/sec; 0.589 sec/batch)step 510,loss = 2.02(214.2 examples/sec; 0.598 sec/batch)step 520,loss = 2.23(217.2 examples/sec; 0.589 sec/batch)step 530,loss = 2.18(219.4 examples/sec; 0.584 sec/batch)step 540,loss = 2.06(213.6 examples/sec; 0.599 sec/batch)step 550,loss = 2.09(219.0 examples/sec; 0.585 sec/batch)step 560,loss = 2.00(214.6 examples/sec; 0.597 sec/batch)step 570,loss = 1.98(216.0 examples/sec; 0.593 sec/batch)step 580,loss = 2.02(215.0 examples/sec; 0.595 sec/batch)step 590,loss = 2.08(218.7 examples/sec; 0.585 sec/batch)step 600,loss = 2.14(218.1 examples/sec; 0.587 sec/batch)step 610,loss = 2.16(212.7 examples/sec; 0.602 sec/batch)step 620,loss = 1.99(208.1 examples/sec; 0.615 sec/batch)step 630,loss = 2.03(214.8 examples/sec; 0.596 sec/batch)step 640,loss = 1.93(217.9 examples/sec; 0.587 sec/batch)step 650,loss = 1.97(219.8 examples/sec; 0.582 sec/batch)step 660,loss = 1.96(213.7 examples/sec; 0.599 sec/batch)step 670,loss = 2.08(219.6 examples/sec; 0.583 sec/batch)step 680,loss = 1.93(217.5 examples/sec; 0.589 sec/batch)step 690,loss = 1.98(218.2 examples/sec; 0.587 sec/batch)step 700,loss = 2.05(216.2 examples/sec; 0.592 sec/batch)step 710,loss = 2.05(214.1 examples/sec; 0.598 sec/batch)step 720,loss = 2.09(217.4 examples/sec; 0.589 sec/batch)step 730,loss = 2.02(218.3 examples/sec; 0.586 sec/batch)step 740,loss = 1.95(218.2 examples/sec; 0.587 sec/batch)step 750,loss = 2.10(217.5 examples/sec; 0.588 sec/batch)step 760,loss = 2.04(213.2 examples/sec; 0.600 sec/batch)step 770,loss = 2.08(214.1 examples/sec; 0.598 sec/batch)step 780,loss = 2.05(219.2 examples/sec; 0.584 sec/batch)step 790,loss = 2.04(215.4 examples/sec; 0.594 sec/batch)step 800,loss = 2.03(221.6 examples/sec; 0.578 sec/batch)step 810,loss = 1.99(218.7 examples/sec; 0.585 sec/batch)step 820,loss = 2.08(217.9 examples/sec; 0.587 sec/batch)step 830,loss = 2.10(217.8 examples/sec; 0.588 sec/batch)step 840,loss = 2.06(217.9 examples/sec; 0.587 sec/batch)step 850,loss = 2.13(214.7 examples/sec; 0.596 sec/batch)step 860,loss = 2.01(207.4 examples/sec; 0.617 sec/batch)step 870,loss = 2.03(208.7 examples/sec; 0.613 sec/batch)step 880,loss = 1.97(213.1 examples/sec; 0.601 sec/batch)step 890,loss = 1.90(217.7 examples/sec; 0.588 sec/batch)step 900,loss = 1.95(218.0 examples/sec; 0.587 sec/batch)step 910,loss = 2.05(219.2 examples/sec; 0.584 sec/batch)step 920,loss = 1.88(218.8 examples/sec; 0.585 sec/batch)step 930,loss = 1.90(216.7 examples/sec; 0.591 sec/batch)step 940,loss = 2.19(216.0 examples/sec; 0.593 sec/batch)step 950,loss = 1.95(215.1 examples/sec; 0.595 sec/batch)step 960,loss = 1.98(206.1 examples/sec; 0.621 sec/batch)step 970,loss = 2.07(207.5 examples/sec; 0.617 sec/batch)step 980,loss = 1.94(208.4 examples/sec; 0.614 sec/batch)step 990,loss = 2.12(208.4 examples/sec; 0.614 sec/batch)step 1000,loss = 1.88(206.3 examples/sec; 0.621 sec/batch)step 1010,loss = 2.17(211.6 examples/sec; 0.605 sec/batch)step 1020,loss = 1.96(211.6 examples/sec; 0.605 sec/batch)step 1030,loss = 1.99(218.4 examples/sec; 0.586 sec/batch)step 1040,loss = 1.91(205.3 examples/sec; 0.623 sec/batch)step 1050,loss = 2.05(218.2 examples/sec; 0.587 sec/batch)step 1060,loss = 2.21(215.7 examples/sec; 0.593 sec/batch)step 1070,loss = 2.13(212.0 examples/sec; 0.604 sec/batch)step 1080,loss = 2.16(208.5 examples/sec; 0.614 sec/batch)step 1090,loss = 2.05(204.9 examples/sec; 0.625 sec/batch)step 1100,loss = 2.04(217.3 examples/sec; 0.589 sec/batch)step 1110,loss = 2.04(218.1 examples/sec; 0.587 sec/batch)step 1120,loss = 2.07(207.9 examples/sec; 0.616 sec/batch)step 1130,loss = 1.98(214.8 examples/sec; 0.596 sec/batch)step 1140,loss = 1.98(214.0 examples/sec; 0.598 sec/batch)step 1150,loss = 1.97(217.2 examples/sec; 0.589 sec/batch)step 1160,loss = 1.90(218.8 examples/sec; 0.585 sec/batch)step 1170,loss = 2.00(220.2 examples/sec; 0.581 sec/batch)step 1180,loss = 1.99(220.5 examples/sec; 0.580 sec/batch)step 1190,loss = 2.03(217.9 examples/sec; 0.588 sec/batch)step 1200,loss = 1.84(216.2 examples/sec; 0.592 sec/batch)step 1210,loss = 1.79(204.4 examples/sec; 0.626 sec/batch)step 1220,loss = 2.03(206.7 examples/sec; 0.619 sec/batch)step 1230,loss = 1.96(200.6 examples/sec; 0.638 sec/batch)step 1240,loss = 2.04(205.4 examples/sec; 0.623 sec/batch)step 1250,loss = 1.94(210.7 examples/sec; 0.608 sec/batch)step 1260,loss = 2.08(209.7 examples/sec; 0.610 sec/batch)step 1270,loss = 2.04(217.4 examples/sec; 0.589 sec/batch)step 1280,loss = 2.04(216.8 examples/sec; 0.590 sec/batch)step 1290,loss = 1.96(216.1 examples/sec; 0.592 sec/batch)step 1300,loss = 1.98(219.3 examples/sec; 0.584 sec/batch)step 1310,loss = 2.01(216.9 examples/sec; 0.590 sec/batch)step 1320,loss = 1.89(214.9 examples/sec; 0.596 sec/batch)step 1330,loss = 1.90(214.8 examples/sec; 0.596 sec/batch)step 1340,loss = 2.03(215.7 examples/sec; 0.593 sec/batch)step 1350,loss = 1.93(219.1 examples/sec; 0.584 sec/batch)step 1360,loss = 1.99(217.9 examples/sec; 0.587 sec/batch)step 1370,loss = 2.07(204.2 examples/sec; 0.627 sec/batch)step 1380,loss = 2.04(205.6 examples/sec; 0.623 sec/batch)step 1390,loss = 1.91(202.5 examples/sec; 0.632 sec/batch)step 1400,loss = 2.02(206.1 examples/sec; 0.621 sec/batch)step 1410,loss = 1.97(219.2 examples/sec; 0.584 sec/batch)step 1420,loss = 1.89(213.5 examples/sec; 0.600 sec/batch)step 1430,loss = 1.82(206.2 examples/sec; 0.621 sec/batch)step 1440,loss = 2.07(209.9 examples/sec; 0.610 sec/batch)step 1450,loss = 1.93(212.4 examples/sec; 0.603 sec/batch)step 1460,loss = 1.98(207.6 examples/sec; 0.617 sec/batch)step 1470,loss = 1.96(220.7 examples/sec; 0.580 sec/batch)step 1480,loss = 1.98(215.2 examples/sec; 0.595 sec/batch)step 1490,loss = 1.94(216.6 examples/sec; 0.591 sec/batch)step 1500,loss = 1.93(214.8 examples/sec; 0.596 sec/batch)step 1510,loss = 1.90(220.3 examples/sec; 0.581 sec/batch)step 1520,loss = 1.96(216.8 examples/sec; 0.590 sec/batch)step 1530,loss = 1.93(211.3 examples/sec; 0.606 sec/batch)step 1540,loss = 1.90(218.1 examples/sec; 0.587 sec/batch)step 1550,loss = 2.02(217.7 examples/sec; 0.588 sec/batch)step 1560,loss = 1.93(214.0 examples/sec; 0.598 sec/batch)step 1570,loss = 2.06(211.0 examples/sec; 0.607 sec/batch)step 1580,loss = 2.02(207.2 examples/sec; 0.618 sec/batch)step 1590,loss = 2.01(210.3 examples/sec; 0.609 sec/batch)step 1600,loss = 1.99(206.1 examples/sec; 0.621 sec/batch)step 1610,loss = 1.96(206.1 examples/sec; 0.621 sec/batch)step 1620,loss = 1.96(214.0 examples/sec; 0.598 sec/batch)step 1630,loss = 1.97(214.3 examples/sec; 0.597 sec/batch)step 1640,loss = 1.90(217.6 examples/sec; 0.588 sec/batch)step 1650,loss = 2.08(219.0 examples/sec; 0.584 sec/batch)step 1660,loss = 1.95(220.0 examples/sec; 0.582 sec/batch)step 1670,loss = 1.92(214.0 examples/sec; 0.598 sec/batch)step 1680,loss = 1.86(216.8 examples/sec; 0.590 sec/batch)step 1690,loss = 1.86(214.4 examples/sec; 0.597 sec/batch)step 1700,loss = 2.10(217.0 examples/sec; 0.590 sec/batch)step 1710,loss = 1.98(220.0 examples/sec; 0.582 sec/batch)step 1720,loss = 1.84(216.5 examples/sec; 0.591 sec/batch)step 1730,loss = 1.89(216.2 examples/sec; 0.592 sec/batch)step 1740,loss = 2.03(206.7 examples/sec; 0.619 sec/batch)step 1750,loss = 1.93(204.4 examples/sec; 0.626 sec/batch)step 1760,loss = 1.86(220.4 examples/sec; 0.581 sec/batch)step 1770,loss = 1.91(198.9 examples/sec; 0.643 sec/batch)step 1780,loss = 1.91(202.1 examples/sec; 0.633 sec/batch)step 1790,loss = 1.84(199.0 examples/sec; 0.643 sec/batch)step 1800,loss = 2.11(216.5 examples/sec; 0.591 sec/batch)step 1810,loss = 2.01(218.6 examples/sec; 0.585 sec/batch)step 1820,loss = 2.05(216.2 examples/sec; 0.592 sec/batch)step 1830,loss = 1.93(215.5 examples/sec; 0.594 sec/batch)step 1840,loss = 1.92(214.7 examples/sec; 0.596 sec/batch)step 1850,loss = 1.93(208.0 examples/sec; 0.616 sec/batch)step 1860,loss = 1.84(207.2 examples/sec; 0.618 sec/batch)step 1870,loss = 1.98(208.6 examples/sec; 0.613 sec/batch)step 1880,loss = 2.03(212.4 examples/sec; 0.603 sec/batch)step 1890,loss = 2.01(217.6 examples/sec; 0.588 sec/batch)step 1900,loss = 1.93(215.7 examples/sec; 0.593 sec/batch)step 1910,loss = 2.01(206.3 examples/sec; 0.621 sec/batch)step 1920,loss = 1.99(209.3 examples/sec; 0.612 sec/batch)step 1930,loss = 1.89(217.4 examples/sec; 0.589 sec/batch)step 1940,loss = 1.70(212.6 examples/sec; 0.602 sec/batch)step 1950,loss = 1.94(216.5 examples/sec; 0.591 sec/batch)step 1960,loss = 1.88(216.6 examples/sec; 0.591 sec/batch)step 1970,loss = 2.02(215.8 examples/sec; 0.593 sec/batch)step 1980,loss = 1.84(214.0 examples/sec; 0.598 sec/batch)step 1990,loss = 2.05(214.3 examples/sec; 0.597 sec/batch)step 2000,loss = 1.98(214.9 examples/sec; 0.596 sec/batch)step 2010,loss = 1.98(162.0 examples/sec; 0.790 sec/batch)step 2020,loss = 2.02(202.0 examples/sec; 0.634 sec/batch)step 2030,loss = 1.85(206.3 examples/sec; 0.621 sec/batch)step 2040,loss = 1.88(204.5 examples/sec; 0.626 sec/batch)step 2050,loss = 1.93(207.4 examples/sec; 0.617 sec/batch)step 2060,loss = 2.10(207.1 examples/sec; 0.618 sec/batch)step 2070,loss = 2.10(205.1 examples/sec; 0.624 sec/batch)step 2080,loss = 2.03(203.9 examples/sec; 0.628 sec/batch)step 2090,loss = 1.75(204.9 examples/sec; 0.625 sec/batch)step 2100,loss = 1.92(208.2 examples/sec; 0.615 sec/batch)step 2110,loss = 2.00(206.0 examples/sec; 0.621 sec/batch)step 2120,loss = 1.94(209.7 examples/sec; 0.610 sec/batch)step 2130,loss = 1.92(201.5 examples/sec; 0.635 sec/batch)step 2140,loss = 1.77(208.5 examples/sec; 0.614 sec/batch)step 2150,loss = 1.94(203.3 examples/sec; 0.630 sec/batch)step 2160,loss = 1.99(200.2 examples/sec; 0.639 sec/batch)step 2170,loss = 2.01(201.7 examples/sec; 0.635 sec/batch)step 2180,loss = 1.99(202.3 examples/sec; 0.633 sec/batch)step 2190,loss = 2.00(197.7 examples/sec; 0.647 sec/batch)step 2200,loss = 1.93(200.1 examples/sec; 0.640 sec/batch)step 2210,loss = 1.96(202.1 examples/sec; 0.633 sec/batch)step 2220,loss = 1.82(201.5 examples/sec; 0.635 sec/batch)step 2230,loss = 1.98(201.9 examples/sec; 0.634 sec/batch)step 2240,loss = 1.82(201.6 examples/sec; 0.635 sec/batch)step 2250,loss = 1.92(203.5 examples/sec; 0.629 sec/batch)step 2260,loss = 1.99(209.9 examples/sec; 0.610 sec/batch)step 2270,loss = 1.95(209.0 examples/sec; 0.612 sec/batch)step 2280,loss = 1.95(200.0 examples/sec; 0.640 sec/batch)step 2290,loss = 1.86(201.3 examples/sec; 0.636 sec/batch)step 2300,loss = 2.01(202.0 examples/sec; 0.634 sec/batch)step 2310,loss = 1.84(202.3 examples/sec; 0.633 sec/batch)step 2320,loss = 1.92(201.1 examples/sec; 0.637 sec/batch)step 2330,loss = 1.79(203.6 examples/sec; 0.629 sec/batch)step 2340,loss = 1.74(191.3 examples/sec; 0.669 sec/batch)step 2350,loss = 2.08(201.9 examples/sec; 0.634 sec/batch)step 2360,loss = 1.91(204.2 examples/sec; 0.627 sec/batch)step 2370,loss = 2.01(206.7 examples/sec; 0.619 sec/batch)step 2380,loss = 1.77(197.8 examples/sec; 0.647 sec/batch)step 2390,loss = 1.93(209.9 examples/sec; 0.610 sec/batch)step 2400,loss = 1.92(202.5 examples/sec; 0.632 sec/batch)step 2410,loss = 1.91(158.8 examples/sec; 0.806 sec/batch)step 2420,loss = 1.83(162.1 examples/sec; 0.789 sec/batch)step 2430,loss = 1.83(182.4 examples/sec; 0.702 sec/batch)step 2440,loss = 1.79(199.8 examples/sec; 0.641 sec/batch)step 2450,loss = 1.96(200.5 examples/sec; 0.638 sec/batch)step 2460,loss = 1.89(202.3 examples/sec; 0.633 sec/batch)step 2470,loss = 1.92(200.8 examples/sec; 0.637 sec/batch)step 2480,loss = 1.91(201.2 examples/sec; 0.636 sec/batch)step 2490,loss = 1.87(202.0 examples/sec; 0.634 sec/batch)step 2500,loss = 1.75(199.8 examples/sec; 0.641 sec/batch)step 2510,loss = 1.90(202.6 examples/sec; 0.632 sec/batch)step 2520,loss = 1.86(201.3 examples/sec; 0.636 sec/batch)step 2530,loss = 1.83(204.5 examples/sec; 0.626 sec/batch)step 2540,loss = 1.89(203.1 examples/sec; 0.630 sec/batch)step 2550,loss = 2.01(203.3 examples/sec; 0.630 sec/batch)step 2560,loss = 1.98(208.6 examples/sec; 0.614 sec/batch)step 2570,loss = 1.89(208.2 examples/sec; 0.615 sec/batch)step 2580,loss = 1.85(202.7 examples/sec; 0.631 sec/batch)step 2590,loss = 1.90(200.1 examples/sec; 0.640 sec/batch)step 2600,loss = 1.86(202.5 examples/sec; 0.632 sec/batch)step 2610,loss = 1.84(202.1 examples/sec; 0.633 sec/batch)step 2620,loss = 1.95(198.2 examples/sec; 0.646 sec/batch)step 2630,loss = 1.83(200.5 examples/sec; 0.638 sec/batch)step 2640,loss = 1.84(200.8 examples/sec; 0.637 sec/batch)step 2650,loss = 1.90(193.2 examples/sec; 0.663 sec/batch)step 2660,loss = 1.82(200.6 examples/sec; 0.638 sec/batch)step 2670,loss = 1.98(201.1 examples/sec; 0.637 sec/batch)step 2680,loss = 1.91(199.2 examples/sec; 0.643 sec/batch)step 2690,loss = 1.88(200.9 examples/sec; 0.637 sec/batch)step 2700,loss = 1.97(201.1 examples/sec; 0.636 sec/batch)step 2710,loss = 1.76(199.3 examples/sec; 0.642 sec/batch)step 2720,loss = 1.97(198.2 examples/sec; 0.646 sec/batch)step 2730,loss = 2.03(195.6 examples/sec; 0.654 sec/batch)step 2740,loss = 1.95(199.7 examples/sec; 0.641 sec/batch)step 2750,loss = 2.07(199.0 examples/sec; 0.643 sec/batch)step 2760,loss = 1.85(198.0 examples/sec; 0.646 sec/batch)step 2770,loss = 1.95(201.8 examples/sec; 0.634 sec/batch)step 2780,loss = 1.82(206.1 examples/sec; 0.621 sec/batch)step 2790,loss = 1.66(209.6 examples/sec; 0.611 sec/batch)step 2800,loss = 1.85(203.6 examples/sec; 0.629 sec/batch)step 2810,loss = 1.91(206.2 examples/sec; 0.621 sec/batch)step 2820,loss = 1.88(205.5 examples/sec; 0.623 sec/batch)step 2830,loss = 1.89(210.7 examples/sec; 0.607 sec/batch)step 2840,loss = 1.85(207.1 examples/sec; 0.618 sec/batch)step 2850,loss = 2.00(203.1 examples/sec; 0.630 sec/batch)step 2860,loss = 2.03(206.1 examples/sec; 0.621 sec/batch)step 2870,loss = 1.93(208.5 examples/sec; 0.614 sec/batch)step 2880,loss = 1.95(205.2 examples/sec; 0.624 sec/batch)step 2890,loss = 1.85(208.2 examples/sec; 0.615 sec/batch)step 2900,loss = 1.87(206.2 examples/sec; 0.621 sec/batch)step 2910,loss = 1.92(209.7 examples/sec; 0.611 sec/batch)step 2920,loss = 1.83(208.5 examples/sec; 0.614 sec/batch)step 2930,loss = 1.84(206.8 examples/sec; 0.619 sec/batch)step 2940,loss = 2.02(207.5 examples/sec; 0.617 sec/batch)step 2950,loss = 1.76(201.9 examples/sec; 0.634 sec/batch)step 2960,loss = 1.89(206.2 examples/sec; 0.621 sec/batch)step 2970,loss = 1.95(207.1 examples/sec; 0.618 sec/batch)step 2980,loss = 1.98(206.5 examples/sec; 0.620 sec/batch)step 2990,loss = 1.86(207.2 examples/sec; 0.618 sec/batch)precision @ 1 = 0.503Process finished with exit code 0

推测是迭代次数太少,学习速率衰减没有用SGD的方法,使得最后准确率这么低。 还有可能是因为CPU跑的原因,导致损失loss还是很高。还是要用GPU最好啊!无奈MAC。
数据增强在我们的训练中作用很大,提高图片的利用率,防止对某一张图片结构的学习过拟合,如果神经网络可以克服这些噪声并准确识别,那么它的泛化性必然会很好。
于是我将max_steps改为了5000,batch_size改为了20,得到结果为:

step 4880,loss = 2.30(150.5 examples/sec; 0.133 sec/batch)step 4890,loss = 2.30(152.9 examples/sec; 0.131 sec/batch)step 4900,loss = 2.30(148.7 examples/sec; 0.134 sec/batch)step 4910,loss = 2.30(142.0 examples/sec; 0.141 sec/batch)step 4920,loss = 2.30(127.3 examples/sec; 0.157 sec/batch)step 4930,loss = 2.30(148.8 examples/sec; 0.134 sec/batch)step 4940,loss = 2.30(147.3 examples/sec; 0.136 sec/batch)step 4950,loss = 2.30(153.5 examples/sec; 0.130 sec/batch)step 4960,loss = 2.30(150.1 examples/sec; 0.133 sec/batch)step 4970,loss = 2.30(132.8 examples/sec; 0.151 sec/batch)step 4980,loss = 2.30(189.5 examples/sec; 0.106 sec/batch)step 4990,loss = 2.30(183.5 examples/sec; 0.109 sec/batch)precision @ 1 = 1.000Process finished with exit code 0

可以看到这个准确率计算的方式还可能不够精确描述,偶然性有点大,但是明显能看到max_steps和batch_size的调整对结果的影响还是很大的。