10分鐘入門Keras : 兩種快速模型搭建方式

2021-03-02 機器學習算法與Python精研

正文共:3234 字 0 圖

預計閱讀時間: 9 分鐘

Keras 默認使用TensorFlow後端,使得神經網絡的搭建不會像TensorFlow複雜,所以在學會TensorFlow基本概念後,學習Keras能夠更快速的搭建自己的模型。

Keras 有 兩種使用方式:第一是Seuqential方式,第二種是函數式API。

最簡單的模型是 Sequential 順序模型,它由多個網絡層線性堆疊。對於更複雜的結構,你應該使用 Keras 函數式 API,它允許構建任意的神經網絡。

Sequential 使用方法

Sequential 模型如下所示:

from keras.models import Sequential

model = Sequential()

可以簡單地使用 .add() 來堆疊模型:

from keras.layers import Dense

model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

在完成了模型的構建後, 可以使用 .compile() 來配置學習過程:

model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])

如果需要,你還可以進一步地配置你的優化器。Keras 的核心原則是使事情變得相當簡單,同時又允許用戶在需要的時候能夠進行完全的控制(終極的控制是原始碼的易擴展性)。

model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

現在,你可以批量地在訓練數據上進行迭代了:


model.fit(x_train, y_train, epochs=5, batch_size=32)

或者,你可以手動地將批次的數據提供給模型:

model.train_on_batch(x_batch, y_batch)

只需一行代碼就能評估模型性能:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

或者對新的數據生成預測:

classes = model.predict(x_test, batch_size=128)

構建一個問答系統,一個圖像分類模型,一個神經圖靈機,或者其他的任何模型,就是這麼的快。

全部代碼集中如下:

from keras.models import Sequential
model = Sequential()
from keras.layers import Dense
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])



model.fit(x_train, y_train, epochs=5, batch_size=32)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
classes = model.predict(x_test, batch_size=128)

2.使用函數式API

通過代碼來領會函數式使用方法。

2.1搭建一個稠密連接網絡

from keras.layers import Input, Dense
from keras.models import Model


inputs = Input(shape=(784,))


x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)



model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(data, labels)  

2.2搭建複雜的模型


inputs  =Input(shape = input_shape,name= 'input')


conv1 = Conv2D(32,(3,3),name= 'conv1')(inputs)
relu1 = Activation('relu',name ='relu1')(conv1)


conv2 = Conv2D(32,(3,3),name ='conv2')(relu1)
relu2 = Activation('relu',name='relu2')(conv2)
pool2 = MaxPooling2D(pool_size=(2,2),padding ='same',name = 'pool2')(relu2)


conv3 = Conv2D(64,(3,3),name = 'conv3')(pool2)
relu3 = Activation('relu',name='relu3')(conv3)
pool3 = MaxPooling2D(pool_size=(2,2),padding='same',name ='pool3')(relu3)


x= Flatten()(pool3)


x  =Dropout(0.25)(x)


x = [Dense(10,activation='softmax',name='fc%d'%(i))(x) for i in range(4) ]


outs = Concatenate()(x)


model =Model(inputs=inputs ,outputs=outs)
model.compile(optimizer=OPT,loss = LOSS,metrics=['accuracy'])
history =  model.fit(X_train,
                    Y_train,
                    batch_size=BATCH_SIZE,
                    epochs=EPOCHS,
                    verbose=2,
                    validation_data=(X_test,Y_test)) #開始訓練
model.predict(X_test[9].reshape(1,60,160,1))

更多內容可以參考Keras中文文檔,閱讀原文直達連結!

推薦閱讀

下載|730頁 凸優化英文原版

下載|382頁 PYTHON自然語言處理

下載|498頁 Python基礎教程第3版

下載|1001頁 Python數據分析與數據化運營

下載|439頁 統計學習基礎-數據挖掘、推理預測

下載|271頁 漫畫線性代數

下載|322頁 Machine Learning for Hackers

下載|215頁 推薦系統實踐

BAT算法工程師(機器學習)面試100題(上)

GBDT+LR算法解析及Python實現

下載|Python刷題,你要的LeetCode答案都在這裡了!

下載|吳恩達deeplearning.ai深度學習教學視頻

10分鐘入門TensorFlow

10分鐘入門TensorFlow(2): 房價預測(Python代碼篇)

比Adam,SGD更優秀的AdaBound實驗對比代碼

GBDT+LR算法解析及Python實現

下載|經典《深度學習-花書》《機器學習-周志華》《統計學習方法-李航》《機器學習實戰》《利用Python進行數據分析》

CNN網絡架構演進:從LeNet到DenseNet

比Adam,SGD更優秀的AdaBound實驗對比代碼

相關焦點

  • Keras入門系列教程:兩分鐘構建你的第一個神經網絡模型
    創建新圖層,損失函數並開發最先進的模型。導入tf.kerastf.keras是TensorFlow實現的 Keras API規範。這是一個用於構建和訓練模型的高級API,其中包括對TensorFlow特定功能的一流支持,例如急切執行, tf.data pipeline和estimators。
  • 深度學習第17講:keras入門和快速上手指南
    數據挖掘與機器學習,R與Python,理論與實踐並行。及其Tensorflow實現      深度學習到這個進度,筆者覺得有必要開始對一些優秀的深度學習框架進行介紹了。在前面幾講中,我們著重對 Tensorflow 進行了介紹,並用其實現了一些數據例子。Tensorflow 雖然很強大,但語法和使用便利性上對於新手來說並不是那麼的友好,所以到這裡筆者需要給大家介紹 keras 了。
  • 從零開始深度學習第17講:keras入門及快速上手指南
    keras 以 Tensorflow、Theano、CNTK 為後端,意思就是 keras 的底層計算都是以以上這些框架為基礎的,這使得 keras能夠專注於快速搭建起神經網絡模型。keras 搭建神經網絡的基本流程     利用 keras 搭建神經網絡模型非常快速和高效,其模型實現的核心流程可以用四個步驟來概括。
  • 帶你少走彎路:強烈推薦的Keras快速入門資料和翻譯(可下載)
    上次寫了TensorFlow和PyTorch的快速入門資料
  • 乾貨 :10分鐘搭建你的第一個圖像識別模型(附步驟、代碼)
    本文約3400字,建議閱讀10分鐘。本文介紹了圖像識別的深度學習模型的建立過程,通過陳述實際比賽的問題、介紹模型框架和展示解決方案代碼,為初學者提供了解決圖像識別問題的基礎框架。 序言「幾分鐘就可以建立一個深度學習模型?
  • Keras結合Keras後端搭建個性化神經網絡模型(不用原生Tensorflow)
    它幫我們實現了一系列經典的神經網絡層(全連接層、卷積層、循環層等),以及簡潔的迭代模型的接口,讓我們能在模型層面寫代碼,從而不用仔細考慮模型各層張量之間的數據流動。但是,當我們有了全新的想法,想要個性化模型層的實現,Keras的高級API是不能滿足這一要求的,而換成Tensorflow又要重新寫很多輪子,這時,Keras的後端就派上用場了。
  • 好書推薦|走向TensorFlow 2.0:深度學習應用編程快速入門
    —文末附本書電子版下載地址— 本書簡介 《走向TensorFlow 2.0:深度學習應用編程快速入門》是TensorFlow 2.0編程實踐的入門類書籍,目的是在TensorFlow2.0正式版發布之際能夠幫助大家快速了解其核心特性及基本編程技巧。
  • Keras使用進階(Ⅰ)
    作者&編輯:李中梁前言在一年多前筆者寫過一篇keras使用入門指南:超快速!10分鐘入門Keras指南。
  • Keras作者力推開源框架Lore:15分鐘搞定深度學習模型從配置到部署
    AI 前線導讀:今天,Keras 的作者 Francois Chollet 轉推了一篇文章,教大家基於開源框架 Lore 在 15 分鐘內建立深度學習模型,用 Python 配置、構建、部署和維護深度學習模型。真的能在這麼短的時間內構建深度學習模型嗎?我們來一探究竟。
  • keras中文文檔
    泛型模型:簡單和強大的新模塊,用於支持複雜深度學習模型的搭建。更優秀的性能:現在,Keras模型的編譯時間得到縮短。所有的RNN現在都可以用兩種方式實現,以供用戶在不同配置任務和配置環境下取得最大性能。現在,基於Theano的RNN也可以被展開,以獲得大概25%的加速計算。測量指標:現在,你可以提供一系列的測量指標來在Keras的任何監測點觀察模型性能。
  • Python安裝TensorFlow 2、tf.keras和深度學習模型的定義
    如何使用tf.keras開發MLP,CNN和RNN模型以進行回歸,分類和時間序列預測。如何使用tf.keras API的高級功能來檢查和診斷模型。如何通過減少過度擬合和加速訓練來提高tf.keras模型的性能。這些例子很小。您可以在大約60分鐘內完成本教程。
  • Keras構建模型的一般流程
    Keras 可以以兩種方法運行:以 TensorFlow, CNTK, 或者 Theano 作為後端 (backend) 運行在 TensorFlow 裡面直接運行 tf.keras我們用的是 TensorFlow 下面的 Keras,不過在本貼不會涉及任何關於 TensorFlow 的內容,只單單講解 tf.keras 下面的內容。
  • TensorFlow教程:快速入門深度學習五步法(附Keras實例)
    訓練模型 評估模型 使用模型進行預測4種基本元素: 網絡結構:由10種基本層結構和其他層結構組成過程化方法構造網絡模型我們先學習最容易理解的,過程化方法構造網絡模型的過程。 Keras中提供了Sequential容器來實現過程式構造。只要用Sequential的add方法把層結構加進來就可以了。10種基本層結構我們會在後面詳細講。
  • 圖像分類入門,輕鬆拿下90%準確率 | 教你用Keras搞定Fashion-MNIST
    這個數據集致力於成為手寫數字數據集MNIST的替代品,可用作機器學習算法的基準測試,也同樣適合新手入門。下面是深度學習中三種數據的作用:訓練數據,用來訓練模型;驗證數據,用來調整超參數和評估模型;測試數據,用來衡量最優模型的性能。模型構建下面是定義和訓練模型。模型結構在Keras中,有兩種模型定義方法,分別是序貫模型和功能函數。
  • TensorFlow 1.9 新增 tf.keras 官方入門教程(Keras與TF的深度集成)
    好消息是Keras的許多核心功能已經融入了原生的TensorFlow(tf.keras),TensorFlow 1.9新增tf.keras官方入門文檔,介紹了tf.keras的使用。這幾天打開TensorFlow的官方教程頁(https://www.tensorflow.org/tutorials/),會發現教程頁中給出的DEMO變成了基於tf.keras的教程。
  • 圖像分類入門,輕鬆拿下90%準確率|教你用Keras搞Fashion-MNIST
    在進入正題之前,我們先介紹一下上面提到的兩個名詞:Fashion-MNIST,是去年8月底德國研究機構Zalando Research發布的一個數據集,其中訓練集包含60000個樣本,測試集包含10000個樣本,分為10類。樣本都來自日常穿著的衣褲鞋包,每一個都是28×28的灰度圖。
  • Keras 深度學習模型可視化
    可視化模型說明本文要可視化模型為densnet121,其他模型類似,只是卷積層不一樣,目標是對於火災的識別from keras.applications import DenseNet169from keras.preprocessing import imagefrom
  • TextCNN 模型完全解讀及 Keras 實現
    下一篇文章會通過期刊論文來介紹幾篇CNN的具體應用實例,主要介紹模型的網絡結構。TextCNN模型是Yoon Kim在2014年 《Convolutional Neural Networks for Sentence Classification》中提出的,利用卷積神經網絡(CNN)來對處理文本分類問題(NLP)。
  • Keras TensorFlow教程:如何從零開發一個複雜深度學習模型
    本文假設你已經熟悉了 TensorFlow 和卷積神經網絡,如果,你還沒有熟悉,那麼可以先看看這個[10分鐘入門 TensorFlow 教程](http://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow-tutorial/)和[卷積神經網絡教程](http://cv-tricks.com
  • MLK | Keras 入門深度學習逢看必會
    MLK,即Machine Learning Knowledge,本專欄在於對機器學習的重點知識做一次梳理,便於日後溫習,這次主要講下Keras的入門from keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Dense, Dropoutfrom keras.optimizers import RMSprop# 導入數據集(x_train, y_train), (x_test