在TensorFlow(Keras)中了解和實現Dropout

2020-12-05 不靠譜的貓

在本文中,我們將探討Dropout的概念,並了解如何使用TensorFlow和Keras在神經網絡中實現該技術。

了解Dropout

神經網絡在其輸入和輸出層之間具有隱藏層,這些隱藏層中嵌入了神經元,神經元內的權重以及神經元之間的連接使得神經網絡系統能夠模擬學習過程。

簡單神經網絡

一般的觀點是,神經網絡體系結構中的神經元和層越多,其表示能力就越強。表示能力的提高意味著神經網絡可以擬合更複雜的函數,並可以更好地泛化到訓練數據。

複雜神經網絡

越深的神經網絡越容易過度擬合。過度擬合是一個常見問題,它的定義是:模型在訓練數據上表現良好,但經過訓練的機器學習模型無法很好地泛化到不看見的數據。

Dropout的主要目的是使網絡中過度擬合的影響最小化。

Dropout技術是通過隨機減少神經網絡中相互連接的神經元的數量來實現的。在每一個訓練步驟中,每個神經元都有可能被排除在外(從連接的神經元中被剔除)。在某種意義上,層內的神經元學習的權重值不是基於其相鄰神經元的協作。

假設你訓練了7000個不同的神經網絡結構,為了選出最好的一個神經網絡體系結構,你只需要取這7000個訓練過的神經網絡的平均值。

實際上,我們在每個訓練步驟中都在訓練各種不同的網絡(因為在任何兩個訓練步驟中都不可能排除相同的神經元),因此,使用dropout技術訓練的神經網絡是在每個訓練步驟中的所有不同神經元連接組合的平均值。

實際場景

在實際場景中,或者在測試訓練神經網絡的性能時,需要考慮以下兩點:

1、實際上並不是在神經網絡的每個層上都實現了Dropout技術,它通常在神經網絡的最後幾層被使用。

在CIFAR-10機器學習數據集上進行測試時,如果在最後一個隱藏層中使用了Dropout,則錯誤率為15.6%。當相同的數據集在相同的卷積神經網絡上進行測試(任何一層中均未包含dropout技術)時,錯誤率為16.6%,相比之下,這是一個進步。

2、評估訓練過的神經網絡時不會使用Dropout。由於在評估或測試階段未使用Dropout,因此神經網絡可以充分發其潛力,這意味著網絡中的所有神經元都處於活動狀態,每個神經元的輸入連接都比訓練時多。

Python實現

1、導入Python庫

2、加載FashionMNIST機器學習數據集,將圖像進行歸一化並將數據集拆分為測試集、訓練集和驗證集。

3、創建一個包含dropout層的自定義模型。Python代碼如下:

4、加載機器學習模型,並初始化優化器和超參數。

5、對機器學習模型進行總共60個epochs的訓練

model.fit(train_images, train_labels, epochs=60, validation_data=(validation_images, validation_labels))

6、在測試數據集上評估機器學習模型

model.evaluate(test_images, test_labels)

評估結果如下:

最後

Dropout是一種常用的正則化技術,在最先進的計算機視覺任務(如姿態估計、目標檢測或語義分割)中也使用了該技術。

相關焦點

  • TensorFlow(Keras)中的正則化技術及其實現(附代碼)
    相反,本文介紹了一些標準的正則化方法以及如何使用TensorFlow(Keras)在神經網絡中實現它們。有關數學的更多詳細信息,Raimi Karim和Renu Khandelwal的這些文章合理地介紹了L1和L2正則化數學。
  • Keras和TensorFlow究竟哪個會更好?
    我會使用基於 TensorFlow 的標準 keras 模塊和 tf.keras 模塊,來實現一個卷積神經網絡(CNN)。然後,基於一個示例數據集,來訓練這些 CNN,然後檢查所得結果,你會發現,Keras 和 TensorFlow 是可以和諧共處的。
  • TensorFlow 2.1指南:keras模式、渴望模式和圖形模式(附代碼)
    Keras模式import numpy as npimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras.layers import Input, Dense, Flatten, Conv2Dfrom tensorflow.keras import Modelfrom tensorflow.keras.optimizers
  • TensorFlow 2入門指南,初學者必備!
    Tensorflow v1難以使用和理解,因為它的Pythonic較少,但是隨著Keras發行的v2現在與Tensorflow.keras完全同步,它易於使用,易學且易於理解。tensorflow.keras.layers import Densefrom tensorflow.keras.models import Sequential在這裡,我們從tensorflow中導入了2個主要的東西,分別是Dense和Sequential。 從te
  • 深度解讀TensorFlow,了解它的最新發展!
    Tensorboard是tensorflow內置的一個可視化工具,它通過將tensorflow程序輸出的日誌文件的信息可視化,使得tensorflow程序的理解、調試和優化更加簡單高效。Tensorboard的可視化依賴於tensorflow程序運行輸出的日誌文件,因而tensorboard和tensorflow程序在不同的進程中運行。
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    開始菜單運行anaconda navigator檢查是否安裝了notebook(默認有安裝)三、安裝tensorflow/keras在激活的環境中安裝:1. 如果機器上有gpu,則安裝gpu版本,沒有GPU就安裝cpu版。
  • 【TensorFlow2.0】Transformer聊天機器人教程
    在這篇文章中,我們將演示如何構建Transformer聊天機器人。 本文聚焦於:使用TensorFlow Dataset並使用tf.data創建輸入管道來使用Cornell Movie-Dialogs Corpus,使用Model子類化實現MultiHeadAttention,使用Functional API實現Transformer。
  • TensorFlow 1.9.0-rc0 升級 tf.keras 至 Keras 2.1.6 API
    該版本帶來了不少改進和新特性:Update tf.keras to the Keras 2.1.6 API.tfe.Network is deprecated. Please inherit from tf.keras.Model.
  • Keras結合Keras後端搭建個性化神經網絡模型(不用原生Tensorflow)
    但是,當我們有了全新的想法,想要個性化模型層的實現,Keras的高級API是不能滿足這一要求的,而換成Tensorflow又要重新寫很多輪子,這時,Keras的後端就派上用場了。Keras將底層張量庫的函數功能統一封裝在「backend」中,用戶可以用統一的函數接口調用不同的後端實現的相同功能。
  • 步履不停:TensorFlow 2.4新功能一覽!
    集合運算是 TensorFlow 圖表中的單個算子,可以根據硬體、網絡拓撲和張量大小在 TensorFlow 運行時中自動選擇 All Reduce 算法。集合運算還可實現其他集合運算,例如廣播和 All Gather。
  • Keras R語言接口正式發布,同時公開20個完整示例
    Keras和深度學習在過去的幾年間,人們對深度學習的興趣增長迅速,同時期出現了幾個深度學習的框架。在所有的框架中,Keras因為在生產力、靈活性以及對用戶友好性方面的優勢脫穎而出。同時期,tensorflow作為下一代機器學習平臺,非常靈活,很適合產品部署。毫不驚訝地說,Keras和tensorflow正在逐漸超過其他深度學習框架。
  • 在Windows中安裝Tensorflow和Kears深度學習框架
    建立Tensorflow的Anaconda虛擬環境在一臺計算機中,我們常常需要安裝很多軟體,但是每個軟體所需要的Python的關聯模塊或版本不相同。例如,我們要使用Python開發開發網站系統,安裝的網站框架可能需要Python2.X的版本,但是安裝Tensorflow需要Python3.5的版本,此時就會發生版本不一致的問題。
  • 關於TensorFlow,你應該了解的9件事
    TensorFlow 下載地址:https://www.tensorflow.org/install/TensorFlow 初始教程:https://www.datacamp.com/community/tutorials/tensorflow-tutorial
  • 用TensorFlow和Keras構建卷積神經網絡
    筆者已經編寫了一個如何使用TensorFlow的KerasAPI來訓練神經網絡的教程,著重介紹了自動編碼器:http://www.datastuff.tech/machine-learning/autoencoder-deep-learning-tensorflow-eager-api-keras/本文將嘗試三種不同的體系結構
  • 關於TensorFlow 2.0,這裡有你想知道的一切
    在這種情況下,會實現隨機搜索策略。最後可以使用search() 開始優化。它具有與 fit()相同的籤名。最後,可以檢查調諧器的結論,並選擇最佳模型。請注意,訓練日誌和模型檢查點都保存在目錄文件夾(my_logs)中。此外,最小化或最大化目標(驗證精度)的選擇是自動推斷的。5.
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    TensorFlow和PyTorch無疑是業內最受歡迎的框架。我相信你會發現無窮的資源來學習這些深度學習框架之間的異同。在本文中,我們將了解如何在PyTorch和TensorFlow中建立基本的圖像分類模型。我們將從PyTorch和TensorFlow的簡要概述開始。
  • Tensorflow 2.0 即將入場
    硬碟兼容性:只需修改一些變量名稱,Tensorflow 1.x中導出的模型(checkpoints和模型freeze)就能和Tensorflow 2.0兼容。tf.contrib退出歷史舞臺。其中有維護價值的模塊會被移動到別的地方,剩餘的都將被刪除。換言之,如果你在這之前從沒接觸過Tensorflow,你是幸運的。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    keras是google的一個大佬開發的一個高度封裝的模型框架,已開源到github上。起初的計算後臺為Theano(和tensorflow差不多的一個框架),後來經過一系列的劇情,現在默認的計算後臺就為tensorflow了。
  • TensorFlow 資源大全中文版
    循環神經網絡模型/工程圖片形態轉換 – 無監督圖片形態轉換的實現Show, Attend and Tell算法 -基於聚焦機制的自動圖像生成器Neural Style – Neural Style 算法的TensorFlow實現Pretty Tensor – Pretty Tensor提供了高級別的
  • TensorFlow2.1正式版上線:最後一次支持Python2,進一步支持TPU
    在對作業系統的支持上,Windows 和 Linux 系統的 TensorFlow pip 版本默認支持 GPU。也就是說,如果使用 pip install tensorflow,則版本默認為是 gpu 版本(原始的 tensorflow-gpu 版本依然存在)。