Keras入門系列教程:兩分鐘構建你的第一個神經網絡模型

2020-12-04 愛學習愛AI

本教程由深度學習中文社區(Studydl.com)持續發布與更新, 本系列其餘教程地址見文章末尾.

引言

Keras是一個用於構建和訓練深度學習模型的高級API, 後端計算主要使用TensorFlow或者Theano, 由於Theano已停止開發新功能轉入維護階段, 而且目前最新版的TensorFlow已經包含了Keras模塊, 所以本教程採用基於TensorFlow的Keras進行講解, TensorFlow版本1.4.1。Keras主要用於快速原型設計,高級研究和生產中,具有三個主要優勢:

用戶友好的

Keras提供一致而簡潔的API, 能夠極大減少一般應用下用戶的工作量,同時,Keras提供清晰和具有實踐意義的bug反饋。

模塊化和可組合的

Keras模型是通過將可配置的模塊連接在一起而制定的,幾乎沒有限制。

易於擴展

很容易編寫自定義模塊以表達研究的新想法。創建新圖層,損失函數並開發最先進的模型。

導入tf.keras

tf.keras是TensorFlow實現的 Keras API規範。這是一個用於構建和訓練模型的高級API,其中包括對TensorFlow特定功能的一流支持,例如急切執行, tf.data pipeline和estimators。 tf.keras使TensorFlow更易於使用而不犧牲靈活性和性能。

要開始使用tf.keras, 請將其作為TensorFlow程序的一部分導入:

import tensorflow as tffrom tensorflow import keras

tf.keras 可以運行任何與Keras兼容的代碼,但請記住:

在TensorFlow中的tf.keras最新版本可能與PyPI版本的最新的Keras版本不一樣, 可以通過運行tf.keras.version來檢查.當保存模型的權重,tf.keras默認為CheckPoint的格式。可以通過在代碼中設置save_format='h5'使用HDF5。

構建一個簡單的模型

順序模型

在Keras中,您可以組裝網絡層來構建模型。模型通常是一個網絡層構成的圖。最常見的模型類型是一個叫做序貫模型的疊加層:tf.keras.Sequential模型。

構建一個簡單的全連接的網絡(即多層感知器):

model = keras.models.Sequential()# 添加一個含有64個神經網絡單元的全連接層到模型中,並且指定輸入數據的維度model.add(keras.layers.Dense(64, activation='relu',input_shape=(64,)))# 添加另外一個model.add(keras.layers.Dense(64, activation='relu'))# 添加一個具有10個輸出單元且使用softmax為激活函數的全連接層model.add(keras.layers.Dense(10, activation='softmax'))

通過上面的代碼一個具有一個輸入層,一個隱藏層,一個輸出層的神經網絡模型就構建好了.

配置網絡層

除了上面的示例外, tf.keras.layers.Dense層還可以使用很多的參數, 主要的功能如下:

activation:設置網絡層的激活函數。此參數由內置函數的名稱或可調用對象指定。默認情況下,不應用任何激活。kernel_initializer和bias_initializer:創建網絡層時內核或者偏差權重的初始化方案。此參數是名稱或可調用對象。這裡默認為"Glorot uniform"初始化方案。kernel_regularizer和bias_regularizer:設置應用於網絡層中內核或者偏差權重的正則化方案,例如L1或L2正則化。默認情況下,不應用正則化。

以下是tf.keras.layers.Dense使用構造函數參數實例化網絡層:

# 創建一個使用sigmoid為激活函數的layerlayers.Dense(64, activation='sigmoid')# 也可以這樣創建,效果一樣layers.Dense(64, activation=tf.sigmoid)# 一個kernel矩陣使用正則化因子為0.01的L1正則項的全連接層layers.Dense(64, kernel_regularizer=keras.regularizers.l1(0.01))# 一個偏差向量使用正則化因子為0.01的L2正則項的全連接層layers.Dense(64, bias_regularizer=keras.regularizers.l2(0.01))# 一個使用隨機正交矩陣初始化Kernel的全連接層layers.Dense(64, kernel_initializer='orthogonal')# 一個偏差初始化時全為2的全連接層layers.Dense(64, bias_initializer=keras.initializers.constant(2.0))

在上面的內容中,我們使用了幾行代碼就建立了一個神經網絡模型,由此可見Keras真的是非常簡單易用,方便上手, 下一期文章中我們將講解在Keras中怎麼輸入數據與訓練搭建好的神經網絡, 歡迎大家關注我的百家號,第一時間獲得最新教程推送.

TensorFlow入門系列教程文章地址:

只需以下兩步就可獲取到零基礎入門教教程啦:

回到文章最上方點擊關注按鈕關注我的百家號,方便接收最新教程.點擊標題下方的頭像位置, 就可進入我的主頁, 裡面就有我之前發布的TensorFlow入門系列教程啦.

目前已發布的TensorFlow入門教程列表:

相關焦點

  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    keras是神經網絡的一個模型計算框架,嚴格來說不是神經網絡框架。本身沒有重量級計算,它使用其他AI框架作為計算後臺,傻瓜式的使用。它的計算後臺還支持 Theano、CNTK(微軟的一個AI計算後臺)等,也就是說keras是多個計算後臺的門面。官方設計哲學為Simple. Flexible.
  • 使用Keras構建具有自定義結構和層次圖卷積神經網絡
    來源:DeepHub IMBA本文約3600字,建議閱讀5分鐘本文為你介紹了如何構建具有自定義結構和層次的神經網絡:Keras中的圖卷積神經網絡(GCNN)。在這個循序漸進的教程中,我們將構建一個包含並行層的神經網絡,其中包括一個圖卷積層。那麼什麼是圖上的卷積呢?圖卷積神經網絡在傳統的神經網絡層中,我們在層輸入矩陣X和可訓練權值矩陣w之間進行矩陣乘法,然後應用激活函數f。因此,下一層的輸入(當前層的輸出)可以表示為f(XW)。
  • Keras結合Keras後端搭建個性化神經網絡模型(不用原生Tensorflow)
    它幫我們實現了一系列經典的神經網絡層(全連接層、卷積層、循環層等),以及簡潔的迭代模型的接口,讓我們能在模型層面寫代碼,從而不用仔細考慮模型各層張量之間的數據流動。但是,當我們有了全新的想法,想要個性化模型層的實現,Keras的高級API是不能滿足這一要求的,而換成Tensorflow又要重新寫很多輪子,這時,Keras的後端就派上用場了。
  • 通過Keras 構建基於 LSTM 模型的故事生成器
    LSTM 網絡工作示意圖什麼是 LSTM 網絡?LSTM (Long Short Term Memory, 長短期神經網絡)是一種特殊的循環神經網絡(RNN, Recurrent neural networks)。
  • 用TensorFlow和Keras構建卷積神經網絡
    全文共9940字,預計學習時長20分鐘或更長不同神經網絡結構各有所長。本文主要介紹如何在Python中使用TensorFlow和Keras構建卷積神經網絡。筆者已經編寫了一個如何使用TensorFlow的KerasAPI來訓練神經網絡的教程,著重介紹了自動編碼器:http://www.datastuff.tech/machine-learning/autoencoder-deep-learning-tensorflow-eager-api-keras/本文將嘗試三種不同的體系結構
  • 圖像分類入門,輕鬆拿下90%準確率|教你用Keras搞Fashion-MNIST
    這個數據集致力於成為手寫數字數據集MNIST的替代品,可用作機器學習算法的基準測試,也同樣適合新手入門。進入正題,教你用tf.keras完成Fashion-MNIST數據集的圖像分類~運行環境無需設置,只要使用Colab直接打開這個Jupyter Notebook連結,就能找到所有代碼。
  • 英文教程太難啃?這裡有一份TensorFlow2.0中文教程
    作者將此教程分為了三類:TensorFlow 2.0 基礎教程、TensorFlow 2.0 深度學習實踐、TensorFlow 2.0 基礎網絡結構。以基礎教程為例,作者整理了 Keras 快速入門教程、eager 模式、Autograph 等。目前為止,該中文教程已經包含 20 多篇文章,作者還在持續更新中,感興趣的讀者可以 follow。
  • Keras和TensorFlow究竟哪個會更好?
    文本中,Rosebrock 展示了如何訓練使用 Keras 的神經網絡和使用直接構建在 TensorFlow 庫中的 Keras+TensorFlow 集成(具有自定義功能)的模型。Keras 中構建網絡的架構。
  • 如何使用Keras構建殘差神經網絡?
    什麼是殘差神經網絡?原則上,神經網絡的層數越多,應獲得越好的結果。一個更深層的網絡可以學到任何淺層的東西,甚至可能更多。如果對於給定的數據集,網絡無法通過添加更多的層來學習更多東西,那麼它就可以學習這些其他層的恆等映射(identity mappings)。這樣,它可以保留先前層中的信息,並且不會比較淺的層更糟糕。
  • 看懂這篇指南,包你掌握神經網絡的「黑匣子」
    全文共4327字,預計學習時長20分鐘或更長「人類的神經網絡是如何運行的?」這個問題讓很多數據科學家感到困惑。解釋某個簡單神經網絡的工作機制非常容易,但是當某個計算機視覺項目中的層數增加1000倍時,該怎麼辦呢?終端用戶想要了解模型是如何得到最終結果時,僅用紙和筆來解釋深度神經網絡的工作機制是行不通的。
  • Keras官方中文版文檔正式發布了
    但該項目還在進行中,雖然目前已經上線了很多 API 文檔和使用教程,但仍然有一部分內容沒有完成。其實早在官方中文文檔出現以前,就有開發者構建了 Keras 的中文文檔,而且很多讀者都在使用 MoyanZitto 等人構建的中文文檔。
  • 盤點| 機器學習入門算法:從線性模型到神經網絡
    原標題:盤點 | 機器學習入門算法:從線性模型到神經網絡 選自Dataconomy 機器之心編譯 參與:王宇欣、吳攀、蔣思源 預測問題分為兩大類: 現在我們已經介紹了機器學習在預測方面的應用,我們可以討論機器學習算法,其分為 3 個組別:線性模型(linear models)、樹型模型(tree-based models)、和神經網絡(neural networks)。
  • 代碼詳解:一文掌握神經網絡超參數調優
    全文共7002字,預計學習時長14分鐘或更長神經網絡在通信行業和研究中的使用十分常見,但令人遺憾的是,大部分應用都未能產出足以運行其他算法的高性能網絡。應用數學家在開發新型優化算法時,喜歡進行功能測試,有時也被稱為人造景觀。
  • Keras vs PyTorch:誰是第一深度學習框架?
    【IT168 資訊】「第一個深度學習框架該怎麼選」對於初學者而言一直是個頭疼的問題。本文中,來自 deepsense.ai 的研究員給出了他們在高級框架上的答案。在 Keras 與 PyTorch 的對比中,作者還給出了相同神經網絡在不同框架中性能的基準測試結果。
  • PyTorch 深度學習官方入門中文教程 pdf 下載|PyTorchChina
    它主要由Facebookd的人工智慧小組開發,不僅能夠 實現強大的GPU加速,同時還支持動態神經網絡,這一點是現在很多主流框架如TensorFlow都不支持的。 PyTorch提供了兩個高級功能: 1.具有強大的GPU加速的張量計算(如Numpy) 2.包含自動求導系統的深度神經網絡 除了Facebook之外,Twitter、GMU和Salesforce等機構都採用了PyTorch。
  • 教程| 如何使用TensorFlow構建、訓練和改進循環神經網絡
    目前有很多人工智慧應用都依賴於循環深度神經網絡,在谷歌(語音搜索)、百度(DeepSpeech)和亞馬遜的產品中都能看到RNN的身影。然而,當我們開始著手構建自己的 RNN 模型時,我們發現在使用神經網絡處理語音識別這樣的任務上,幾乎沒有簡單直接的先例可以遵循。
  • 教程 | 如何使用TensorFlow構建、訓練和改進循環神經網絡
    目前有很多人工智慧應用都依賴於循環深度神經網絡,在谷歌(語音搜索)、百度(DeepSpeech)和亞馬遜的產品中都能看到RNN的身影。然而,當我們開始著手構建自己的 RNN 模型時,我們發現在使用神經網絡處理語音識別這樣的任務上,幾乎沒有簡單直接的先例可以遵循。
  • 小白學CNN以及Keras的速成
    雖然說tensorflow已經是一個封裝好的框架,但是你發現你寫一個簡單的神經網絡也需要很多行才能夠寫完,這個時候,就有很多的第三方插架來幫助你寫網絡,也就是說你用tensorflow要寫10行,第三方插架幫你封裝了一個函數,就是把這10行集合在這個函數裡面,那麼你用1行,傳入相同的參數,就能夠達到10行相同的效果,如此簡便並且節約時間,可以幫助很快的實現我們的想法。
  • 從小白到入門:用Keras進行圖像基礎分類
    【IT168 資訊】在這篇文章中,將解釋一些在keras中經常需要的常見操作。首先,如何保存模型並使用它們進行預測,從數據集中顯示圖像並從加載系統中圖像並預測其類別。
  • 如何選擇神經網絡激活函數:有效的改善模型學習模式的能力
    機器學習是一個使用統計學和計算機科學原理來創建統計模型的研究領域,用於執行諸如預測和推理之類的主要任務。 這些模型是給定系統的輸入和輸出之間的數學關係集。 學習過程是估計模型參數的過程,以便模型可以執行指定的任務。 學習過程會嘗試使機器具有學習能力,而無需進行顯式編程。 這是ANN的作用。什麼是人工神經網絡?