zoukankan      html  css  js  c++  java
  • Tensorflow练习

    # coding: utf-8

    import tensorflow as tf

    from tensorflow.examples.tutorials.mnist import input_data

    #print("hello")

    #载入数据集
    mnist = input_data.read_data_sets("F:\TensorflowProject\MNIST_data",one_hot=True)

    #每个批次的大小,训练时一次100张放入神经网络中训练
    batch_size = 100

    #计算一共有多少个批次
    n_batch = mnist.train.num_examples//batch_size

    #定义两个placeholder
    x = tf.placeholder(tf.float32,[None,784])
    #0-9十个数字
    y = tf.placeholder(tf.float32,[None,10])
    keep_prob = tf.placeholder(tf.float32)

    #创建一个神经网络
    # W = tf.Variable(tf.zeros([784,10]))
    # b = tf.Variable(tf.zeros([10]))
    W1 = tf.Variable(tf.truncated_normal([784,2000],stddev=0.1))
    b1 = tf.Variable(tf.zeros([2000])+0.1)
    L1 = tf.nn.tanh(tf.matmul(x,W1)+b1)
    L1_drop = tf.nn.dropout(L1,keep_prob)

    #隐藏层1
    W2 = tf.Variable(tf.truncated_normal([2000,2000],stddev=0.1))
    b2 = tf.Variable(tf.zeros([2000])+0.1)
    L2 = tf.nn.tanh(tf.matmul(L1_drop,W2)+b2)
    L2_drop = tf.nn.dropout(L2,keep_prob)

    #隐藏层2
    W3 = tf.Variable(tf.truncated_normal([2000,1000],stddev=0.1))
    b3 = tf.Variable(tf.zeros([1000])+0.1)
    L3 = tf.nn.tanh(tf.matmul(L2_drop,W3)+b3)
    L3_drop = tf.nn.dropout(L3,keep_prob)

    W4 = tf.Variable(tf.truncated_normal([1000,10],stddev=0.1))
    b4 = tf.Variable(tf.zeros([10])+0.1)
    prediction = tf.nn.softmax(tf.matmul(L3_drop,W4)+b4)

    #二次代价函数
    #loss = tf.reduce_mean(tf.square(y-prediction))
    #交叉熵
    #loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction)
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction))
    #使用梯度下降法
    train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)

    #初始化变量
    init = tf.global_variables_initializer()

    #结果存放在一个布尔型列表中
    correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
    #求准确率
    accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

    #
    with tf.Session() as sess:
      sess.run(init)
      for epoch in range(30):
        for batch in range(n_batch):
          batch_xs,batch_ys = mnist.train.next_batch(batch_size)
          sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys,keep_prob:1.0})

        #测试准确率
        test_acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})
        train_acc = sess.run(accuracy,feed_dict={x:mnist.train.images,y:mnist.train.labels,keep_prob:1.0})
        print("Iter: "+str(epoch)+" ,Testing Accuracy "+str(test_acc)+" Train : "+str(train_acc))

    ###########################运行效果

    Extracting F:TensorflowProjectMNIST_data	rain-images-idx3-ubyte.gz
    Extracting F:TensorflowProjectMNIST_data	rain-labels-idx1-ubyte.gz
    Extracting F:TensorflowProjectMNIST_data	10k-images-idx3-ubyte.gz
    Extracting F:TensorflowProjectMNIST_data	10k-labels-idx1-ubyte.gz
    WARNING:tensorflow:From <ipython-input-6-c16fee9228bc>:44: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.
    Instructions for updating:
    
    Future major versions of TensorFlow will allow gradients to flow
    into the labels input on backprop by default.
    
    See tf.nn.softmax_cross_entropy_with_logits_v2.
    
    Iter: 0  ,Testing Accuracy  0.9394    Train : 0.948436
    Iter: 1  ,Testing Accuracy  0.9601    Train : 0.974145
    Iter: 2  ,Testing Accuracy  0.9639    Train : 0.982691
    Iter: 3  ,Testing Accuracy  0.965    Train : 0.9868
    Iter: 4  ,Testing Accuracy  0.9691    Train : 0.988891
    Iter: 5  ,Testing Accuracy  0.9698    Train : 0.9902
    Iter: 6  ,Testing Accuracy  0.9692    Train : 0.9912
    Iter: 7  ,Testing Accuracy  0.9706    Train : 0.991836
    Iter: 8  ,Testing Accuracy  0.971    Train : 0.992291
    Iter: 9  ,Testing Accuracy  0.9701    Train : 0.992818
    Iter: 10  ,Testing Accuracy  0.9706    Train : 0.993073
    Iter: 11  ,Testing Accuracy  0.9706    Train : 0.993236
    Iter: 12  ,Testing Accuracy  0.9713    Train : 0.993491
    Iter: 13  ,Testing Accuracy  0.9704    Train : 0.993782
    Iter: 14  ,Testing Accuracy  0.9707    Train : 0.994036
    Iter: 15  ,Testing Accuracy  0.9716    Train : 0.994236
    Iter: 16  ,Testing Accuracy  0.9713    Train : 0.994509
    Iter: 17  ,Testing Accuracy  0.9712    Train : 0.994691
    Iter: 18  ,Testing Accuracy  0.9714    Train : 0.994891
    Iter: 19  ,Testing Accuracy  0.9718    Train : 0.995055
    Iter: 20  ,Testing Accuracy  0.9726    Train : 0.995236
    Iter: 21  ,Testing Accuracy  0.972    Train : 0.995382
    Iter: 22  ,Testing Accuracy  0.9725    Train : 0.995473
    Iter: 23  ,Testing Accuracy  0.9728    Train : 0.995527
    Iter: 24  ,Testing Accuracy  0.9725    Train : 0.995582
    Iter: 25  ,Testing Accuracy  0.9725    Train : 0.995618
    Iter: 26  ,Testing Accuracy  0.9723    Train : 0.995673
    Iter: 27  ,Testing Accuracy  0.9726    Train : 0.9958
    Iter: 28  ,Testing Accuracy  0.9721    Train : 0.995836
    Iter: 29  ,Testing Accuracy  0.9721    Train : 0.995873
  • 相关阅读:
    [CodeForces]Codeforces Round #429 (Div. 2) ABC(待补)
    About Me
    2018-06-14
    Codeforces Codeforces Round #484 (Div. 2) E. Billiard
    Codeforces Codeforces Round #484 (Div. 2) D. Shark
    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
    Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
    Codeforces Avito Code Challenge 2018 D. Bookshelves
    Codeforces Round #485 (Div. 2) D. Fair
    Codeforces Round #485 (Div. 2) F. AND Graph
  • 原文地址:https://www.cnblogs.com/herd/p/9467351.html
Copyright © 2011-2022 走看看