91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何分析TensorFlow基礎中的卷積神經網絡

發布時間:2021-12-23 16:28:31 來源:億速云 閱讀:120 作者:柒染 欄目:大數據

如何分析TensorFlow基礎中的卷積神經網絡,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

卷積神經網絡

抓住它的核心思路,即通過卷積操作縮小了圖像的內容,將模型注意力集中在圖像特定的、明顯的特征上。

max pooling - 增強特征,減少數據如何分析TensorFlow基礎中的卷積神經網絡

 

實現

在下面的代碼中模型在訓練數據上的精度可能上升到93%左右,在驗證數據上可能上升到91%。

這是朝著正確方向取得的顯著進步!

試著運行更多的epochs--比如20個epochs,然后觀察結果! 雖然結果可能看起來非常好,但實際上驗證結果可能會下降,這是因為"過擬合"造成的,后面將會討論。

(簡而言之,'過擬合'發生在網絡模型從訓練集中學習到的結果非常好,但它太狹隘了,只能識別訓練數據,而在看到其他數據時效果不佳。舉個例子,如果我們一輩子只看到紅色的鞋子,那么當我們看到一雙藍色的麂皮鞋可能會感到迷惑......再舉一例,應試教育往往使得學生只對做過的題目有很好的正確率,但對真實的問題卻錯誤率很高)

如何分析TensorFlow基礎中的卷積神經網絡  
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images=training_images.reshape(60000, 28, 28, 1)
training_images=training_images / 255.0
test_images = test_images.reshape(10000, 28, 28, 1)
test_images=test_images/255.0
model = tf.keras.models.Sequential([
  tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(28, 28, 1)),
  tf.keras.layers.MaxPooling2D(2, 2),
  tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
  tf.keras.layers.MaxPooling2D(2,2),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.summary()
model.fit(training_images, training_labels, epochs=5)
test_loss = model.evaluate(test_images, test_labels)
   

卷積模型是如何建立的

第一步是收集數據。我們會注意到,這里和之前有一點變化,訓練數據需要改變維度(shape)。這是因為第一次卷積期望一個包含所有數據的單一張量,所以要把訓練數據設置為60000x28x28x1的一個4D列表,測試圖像也是如此處理。如果不這樣做,會在訓練時得到一個錯誤,因為卷積操作將不能識別數據形狀。

接下來是定義模型。首先要添加一個卷積層。參數是

  • 我們想要生成的卷積數(     過濾器數量)。這個數值是任意的,     但最好是從32開始的倍數
  • 卷積的大小(     過濾器的大小),在本例中為3x3網格。這是最常用的尺寸。
  • 要使用的激活函數 -- 在本例中,我們將使用relu,我們可能還記得它相當于當x>0時返回x,否則返回0。
  • 在第一層,設定輸入數據的形狀

在卷積層之后加上一個MaxPooling層,用來壓縮圖像,同時保持卷積所強調的特征內容。通過為MaxPooling指定(2,2),效果是將圖像的大小縮小四分之一。它的想法是創建一個2x2的像素數組,然后選取最大的一個,從而將4個像素變成1個,在整個圖像中重復這樣做,這樣做的結果是將水平像素的數量減半,垂直像素的數量減半,有效地將圖像縮小25%

再增加一個卷積層和MaxPooling2D。

現在對輸出進行扁平化處理。在這之后,你將擁有與非卷積版本相同的DNN結構,即全連接神經元網絡。

含有128個神經元的全連接層,以及10個神經元的輸出層。

現在編譯模型,調用model.fit方法做訓練,接著用測試集評估損失和準確率。

 

網絡結構

看看可否只使用單個卷積層和單個MaxPooling 2D將MNIST(手寫數字)識別率提高到99.8%或更高的準確率。一旦準確率超過這個數值,應該停止訓練。Epochs不應超過20個。如果epochs達到20但精度未達到要求,那么就需要重新設計層結構。當達到99.8%的準確率時,你應該打印出 "達到99.8%準確率,所以取消訓練!"的字符串。

import tensorflow as tf
from tensorflow import keras

## overwrite callback

class Callbacks(tf.keras.callbacks.Callback):
  def on_epoch_end(self, epoch, logs={}):
    if(logs.get('accuracy')>=0.998):
      print("達到99.8%準確率,所以取消訓練!")
      self.model.stop_training = True

callbacks = Callbacks()

## 準備數據
mnist = tf.keras.datasets.mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()

## 歸一化
training_images = training_images.reshape(60000, 28, 28, 1)
training_images = training_images / 255.0

test_images = test_images.reshape(10000, 28, 28, 1)
test_images  = test_images / 255.0

## 建立模型
model = tf.keras.models.Sequential([
   tf.keras.layers.Conv2D(64, (3,3), activation='relu', input_shape=(28, 28, 1)),
   tf.keras.layers.MaxPooling2D(2, 2),
  #  tf.keras.layers.Conv2D(62, (3, 3), activation='relu'),
  #  tf.keras.layers.MaxPooling2D(2,2),

   tf.keras.layers.Flatten(), ##扁平化
   tf.keras.layers.Dense(128, activation='relu'),
   tf.keras.layers.Dense(10, activation='softmax')
])


## 訓練
model.compile(optimizer=tf.keras.optimizers.Adam(), 
              loss=tf.keras.losses.SparseCategoricalCrossentropy(),
              metrics=['accuracy'])
model.summary()
model.fit(training_images, training_labels, epochs=4, callbacks=[callbacks])

## 預測和評估

test_loss = model.evaluate(test_images, test_labels)

 

結果

如何分析TensorFlow基礎中的卷積神經網絡  

關于如何分析TensorFlow基礎中的卷積神經網絡問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣武区| 黄平县| 临沂市| 庄河市| 屯门区| 海南省| 望都县| 阳曲县| 明水县| 天气| 永州市| 辽中县| 洛阳市| 东乌珠穆沁旗| 长宁县| 启东市| 昌乐县| 浦东新区| 霍山县| 凤庆县| 金沙县| 英吉沙县| 喀喇沁旗| 长沙市| 齐河县| 黑河市| 上饶市| 乌拉特后旗| 凌云县| 通辽市| 桃园市| 永修县| 青河县| 阳山县| 连城县| 克拉玛依市| 云龙县| 顺昌县| 临武县| 乡城县| 中西区|