【tensorflow】tensorflow學習記錄——安裝、第一個程序篇


    機器學習,人工智能往后肯定是一個趨勢,現階段有必要研究一兩個人工智能的工具,以免自己技術落伍,其中tensorflow就是一個很不錯的項目,有谷歌開發后開源,下面開始學習安裝和使用

安裝篇:

    很不幸,源代碼和pip的源都是在谷歌托管,連tensorflow官網都是,所以國內訪問不了,很悲劇。但是通過docker可以輕松安裝,又不用翻牆。

     docker pull tensorflow/tensorflow

    下載tensorflow鏡像。

     docker run -dit -p 8888:8888 --name tensorflow tensorflow/tensorflow

    啟動tensorflow容器。

    如果沒有防火牆的話,現在用瀏覽器訪問docker所在服務器地址的8888端口就可以看到jupyter界面了。(jupyter可以認為是一個python的網頁版IDE,方便使用)

    http://xxx.xxx.xxx.xxx:8888

    為了安全,jupyter默認設置了token驗證,可以通過

    docker logs tensorflow

    查看token。每還一個瀏覽器或者電腦,都需要輸入新的token, 如果有人感覺使用不方便,可以給jupyter設置一個密碼,設置方式如下:

   1,進入tensorflow容器

        docker exec -it tensorflow /bin/bash

   2,運行

         jupyter notebook password

   3, 根據提示兩次輸入密碼

  4, 重啟tensorflow容器

       docker restart tensorflow

二,第一個tensorflow程序

     tensorflow的入門程序是識別手寫數字,就跟其他程序的helloword一樣。

      詳細工作原理,見這個帖子

     http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html

      代碼實現:

      

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
#引入mnist的數據
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
#設置一個數組元素為32位浮點數、未知數*784的數組占位符X
x = tf.placeholder(tf.float32, [None, 784])
#設置一個默認值為0的784*10的數組變量
w = tf.Variable(tf.zeros([784,10]))
#設置一個默認值為0的1*10的數組變量
b = tf.Variable(tf.zeros([10]))
#根據公式生成表達式
y = tf.nn.softmax(tf.matmul(x,w) + b)
#設置一個浮點數,未知數*10的數組占位符y_
y_ = tf.placeholder("float", [None,10])
#根據公式設置表達式
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
#設置訓練方式
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#初始化變量
init = tf.initialize_all_variables()
#生成執行session
sess = tf.Session()
#運行變量初始化
sess.run(init)
#執行1000次訓練,每次從mnist庫中拿出100個數進行訓練
for i in range(10000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})
#
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})

結果為:

Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
0.9215


如果出現這個錯誤

 

Temporary failure in name resolution

那么很不幸,意味着mnist這個庫下載不下來,這個庫也是要訪問谷歌,只能通過vpn或者國外服務器測試了。

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM