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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

tessorflow实战

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tessorflow实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • tessorflow實戰
    • TensorFlow 實現Softmax Regression識別手寫數字

tessorflow實戰

TensorFlow 實現Softmax Regression識別手寫數字

數據集下載鏈接地址https://my.oschina.net/chkui/blog/888346
(擴展:tessorflow模型下載地址 https://github.com/tensorflow/models )

i 代表第幾類,
x 一張圖片
j一張圖片的第幾個像素

下面的代碼下載的數據集位置與執行文件在同一個文件夾中。

步驟
首先在訓練集上訓練模型,
然后在驗證集上檢驗效果并決定何時完成訓練,
最后在驗證集測評模型的效果。

"""作者:FLY功能:實現softmax regression 識別手寫數字2.0:數據集位置與執行文件在同一個文件夾中版本:2.0日期:05/23/2019 """import tensorflow.examples.tutorials.mnist.input_data as input_data mnist = input_data.read_data_sets("D:/software/pycharm/shizhan/softmax/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) # 驗證集import tensorflow as tf x = tf.placeholder(tf.float32, [None, 784]) # 創建輸入數據的地方,數據類型float32,數據尺寸[None, 784]。None表示不限條數的輸入,784是每條輸入是一個784維的向量 W = tf.Variable(tf.zeros([784, 10])) # 創建權值參數矩陣,尺寸[784, 10] b = tf.Variable(tf.zeros([10])) # 創建bias參數向量,尺寸[10],python執行結果是一行10列,matlab執行結果是10行10列 y = tf.nn.softmax(tf.matmul(x, W) + b) # 進行Softmax Regression算法,y是預測的概率分布,y的shape為(None, 10) # softmax是tf.nn下面的一個函數,而tf.nn則包含了大量神經網絡的組件。 # 訓練模型 # 對多分類問題,經常使用交叉熵作為loss function # 計算交叉熵,判斷模型對真實概率分布估計的準確程度,用 tf.reduce_sum 根據 reduction_indices=[1] 指定的參數,計算y中第二個維度所有元素的總和,tf.reduce_mean 用于計算該批次的一個平均值 y_ = tf.placeholder(tf.float32, [None, 10]) # 定義placeholder,y_是真實的概率分布 cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))#tf.reduce_mean用來對每個batch數據求均值 train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # 選擇隨機梯度下降SGD以0.5的學習速率最小化交叉熵init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) # 上面三行可改寫為下面一行 # tf.global_variables_initiallizer().run()for i in range(1000): # 模型循環訓練1000次,從0開始batch_xs, batch_ys = mnist.train.next_batch(100) # 隨機抓取訓練數據中的100個批處理數據點sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # 評估模型 # tf.argmax是從一個tensor中尋找最大值的序號,tf.argmax(y,1)求預測數字中概率最大的那一個,tf.argmax(y_,1)求樣本的真實數字類別 # tf.equal 判斷預測的數字類別是否就是正確的類別 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) # 用tf.cast將之前的correct_prediction輸出的bool值轉換為float32,再求平均值 accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) #輸入數據,計算準確率

輸出結果:0.9195
4個步驟:1、定義算法公式,也就是神經網絡forward時的計算
2、定義loss,選定優化器,并指定優化器優化loss。
3、迭代地對數據進行訓練
4、在測試集或驗證集上對準確率進行評測。
注意:只有調用run方法,并feed數據時計算才真正執行。

總結

以上是生活随笔為你收集整理的tessorflow实战的全部內容,希望文章能夠幫你解決所遇到的問題。

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