Win10: tensorflow 学习笔记(3)
前言
學以致用,以學促用。輸出檢驗,完整閉環。
怕什么真理無窮,進一寸有一寸的歡喜——胡適
經過前段時間的努力,已經在電腦上搭好了深度學習系統,接下來就要開始跑程序了,將AI落地了。
安裝win10下tensforlow 可以參照之前的例子:win10+gpu安裝
在使用gpu版本中一些特別的問題,可以參照這篇:win10+tensorflow+gpu
在運行過程中遇到的一些錯誤,可以參照這篇::tensorflow 錯誤
tensorflow的一些基礎概念,可以參見這篇:tensorflow學習筆記(1)
tensorflow的發展故事,可以參見這篇:tensorfow學習筆記(2)
目錄
- 前言
- Tensorflow 第一步
- Tensorflow mnist數據集
- 小結
- 補充
Tensorflow 第一步
這節主要總結的是安裝tensorflow和訓練一個手寫數字識別的模型。
安裝可以參考這篇帖子:
win10:tensorflow-gpu總結
Tensorflow mnist數據集
數據集的介紹可參考之前的文檔:經驗
這節代碼主要參考github上的源碼
主要使用的算法是softmax regression算法。
soft regression簡介
輸入一張圖片后,soft regression會對每個類別給出一個估計的概率,最后取概率最大的類別作為輸出結果。
具體可以參照:softmax詳解
簡單公式如下:
featurei=∑jwi,jxj+bjfeaturei=∑jwi,jxj+bj
其中i代表第i類,j代表一張圖片的第j個像素,bjbj是bias,featureifeaturei第i類的概率
softmax(x)=normalize(exp(x))softmax(x)=normalize(exp(x))
其中softmax就是需要的特征。
softmax(x)i=fracexp(xi)∑jexp(xj)softmax(x)i=fracexp(xi)∑jexp(xj)
特征值越大的類輸出的概率越大:
公式化
額外寫在這里:
交叉熵公式:
Hy′=?∑iy′ilog(yi)Hy′=?∑iyi′log(yi)
>
#先導入依賴的庫import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data #讀入數據 #可能過段時間就不能這么簡單的讀取了。 #one-hot編碼是說label的形式為【000001000】1在的位置代表它是幾? mnist=input_data.read_data_sets("MNIST_data/",one_hot=True) #輸出相關的信息 print(mnist.train.images.shape,mnist.train.labels.shape) print(mnist.test.images.shape,mnist.test.labels.shape) print(mnist.validation.images.shape,mnist.validation.labels.shape)#開啟一個可迭代的會話 sess=tf.InteractiveSession() #初始化參數。 #設置占位符和變量。 x=tf.placeholder(tf.float32,[None,784]) w=tf.Variable(tf.zeros([784,10])) b=tf.Variable(tf.zeros([10])) #計算預測值 y=tf.nn.softmax(tf.matmul(x,w)+b) #計算交叉熵 y_=tf.placeholder(tf.float32,[None,10]) cross_entropy=tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1])) #使用隨機梯度求導優化 train_step=tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) #全局參數初始化。 tf.global_variables_initializer().run() #迭代訓練100次 for i in range(1000): #獲得訓練集batch_xs,batch_ys=mnist.train.next_batch(100)#進行訓練train_step.run({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,tf.float32)) print(accuracy.eval({x:mnist.test.images,y_:mnist.test.labels}))小結
通過這個例子,我們可以將一個項目結構化為四個獨立的部分。
- 1定義算法公式
- 2定義loss,選定優化器,并指定優化器優化loss
- 3迭代地對數據進行訓練。
4在測試集或驗證集上對準確率進行評測。
需要注意的是tensorflow和spark類似,一開始只是進行了計算圖設計,真的計算要調用run方法后才開始,還需要feed數據。
補充
其中發現了一篇好文檔,詳解mnist數據集
詳解,主要是可以可視化源數據究竟是個啥。
,但博主有的部分和我的部分有區別,問題怎么也解決不了:
問題1:數據導入
后來,發現應該這么寫:
X_train,y_train = load_mnist('E:/tensorFlow/Mycode/mnist/mnist_data/')問題2:數據不識別
File "E:\tensorFlow\Mycode\mnist\input_dat2.py", line 20, in load_mnistwith open(labels_path,'rb') as lbpath:PermissionError: [Errno 13] Permission denied: 'mnist_data/train-labels-idx1-ubyte'先是參考了問題
仔細看了錯誤提示,發現是input_data環節出了問題:
博主的文檔里面
是-labels-idx1-ubyte將中間的-改成。以后問題消除。
展示出來了。
總結
以上是生活随笔為你收集整理的Win10: tensorflow 学习笔记(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux查看redis表内所有数据,R
- 下一篇: python慕课笔记_MOOC pyth