日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win10: tensorflow 学习笔记(3)

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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=?iyilog(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('mnist_data\')File "E:/tensorFlow/Mycode/mnist/Main_mnist.py", line 12X_train,y_train = load_mnist('mnist_data\')^ SyntaxError: EOL while scanning string literal

后來,發現應該這么寫:

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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。