久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python安裝TensorFlow 2、tf.keras和深度學(xué)習(xí)模型的定義

 拓端數(shù)據(jù) 2020-10-22

原文鏈接:http:///?p=15826 


深度學(xué)習(xí)的預(yù)測建模是現(xiàn)代開發(fā)人員需要了解的一項技能。

TensorFlow是Google開發(fā)和維護(hù)的首要的開源深度學(xué)習(xí)框架。盡管直接使用TensorFlow可能具有挑戰(zhàn)性,,但現(xiàn)代的tf.keras API使得Keras在TensorFlow項目中的使用簡單易用。

使用tf.keras,,您可以設(shè)計,,擬合,評估和使用深度學(xué)習(xí)模型,,從而僅用幾行代碼即可做出預(yù)測,。它使普通的深度學(xué)習(xí)任務(wù)(如分類和回歸預(yù)測建模)可供希望完成任務(wù)的普通開發(fā)人員使用。

在本教程中,您將找到使用tf.keras API在TensorFlow中開發(fā)深度學(xué)習(xí)模型的分步指南,。

完成本教程后,,您將知道:

  • Keras和tf.keras之間的區(qū)別以及如何安裝和確認(rèn)TensorFlow是否有效。

  • tf.keras模型的5個步驟的生命周期以及如何使用順序和功能性API,。

  • 如何使用tf.keras開發(fā)MLP,,CNN和RNN模型以進(jìn)行回歸,分類和時間序列預(yù)測,。

  • 如何使用tf.keras API的高級功能來檢查和診斷模型,。

  • 如何通過減少過度擬合和加速訓(xùn)練來提高tf.keras模型的性能。

這些例子很小,。您可以在大約60分鐘內(nèi)完成本教程,。

TensorFlow教程概述

本教程旨在為您的深度學(xué)習(xí)項目提供tf.keras的完整介紹。

重點是將API用于常見的深度學(xué)習(xí)模型開發(fā)任務(wù),;我們不會深入研究深度學(xué)習(xí)的數(shù)學(xué)和理論,。

學(xué)習(xí)python深度學(xué)習(xí)的最好方法是邊做邊做。

我設(shè)計了每個代碼示例,,以使用最佳實踐并使其獨立,,以便您可以將其直接復(fù)制并粘貼到您的項目中,并使其適應(yīng)您的特定需求,。

教程分為五個部分。他們是:

  1. 安裝TensorFlow和tf.keras

    1. 什么是Keras和tf.keras,?

    2. 如何安裝TensorFlow

    3. 如何確認(rèn)TensorFlow已安裝

  2. 深度學(xué)習(xí)模型生命周期

    1. 五步模型生命周期

    2. 順序模型API(簡單)

    3. 功能模型API(高級)

  3. 如何開發(fā)深度學(xué)習(xí)模型

    1. 開發(fā)多層感知器模型

    2. 開發(fā)卷積神經(jīng)網(wǎng)絡(luò)模型

    3. 開發(fā)遞歸神經(jīng)網(wǎng)絡(luò)模型

  4. 如何使用高級模型功能

    1. 如何可視化深度學(xué)習(xí)模型

    2. 如何繪制模型學(xué)習(xí)曲線

    3. 如何保存和加載模型

  5. 如何獲得更好的模型性能

    1. 如何減少輟學(xué)過度擬合

    2. 如何通過批量歸一化來加速培訓(xùn)

    3. 如何在適當(dāng)?shù)臅r間停止訓(xùn)練并盡早停止


您可以使用Python進(jìn)行深度學(xué)習(xí)

按照您自己的進(jìn)度完成本教程,。

您不需要了解所有內(nèi)容。您的目標(biāo)是端到端地完成本教程并獲得結(jié)果,。您無需在第一遍就了解所有內(nèi)容,。列出您要提出的問題。

您不需要先了解數(shù)學(xué),。數(shù)學(xué)是描述算法工作方式的一種緊湊方式,,特別是線性代數(shù),概率和統(tǒng)計的工具,。這些并不是您可以用來學(xué)習(xí)算法工作方式的唯一工具,。您還可以使用代碼并探索具有不同輸入和輸出的算法行為。了解數(shù)學(xué)不會告訴您選擇哪種算法或如何對其進(jìn)行最佳配置,。 

您無需知道算法的工作原理,。了解限制以及如何配置深度學(xué)習(xí)算法非常重要。但是學(xué)習(xí)算法可能會在以后出現(xiàn),。您需要在很長一段時間內(nèi)慢慢地建立這種算法知識,。 

您無需成為Python程序員。如果您是Python語言的新手,它的語法可能很直觀,。就像其他語言一樣,,專注于函數(shù)調(diào)用(例如function())和賦值(例如a =“ b”)。這將為您提供大部分幫助,。您是一名開發(fā)人員,,因此您知道如何真正快速地學(xué)習(xí)語言的基礎(chǔ)知識。剛開始,,以后再深入研究細(xì)節(jié),。

您無需成為深度學(xué)習(xí)專家。稍后您可以了解各種算法的優(yōu)點和局限性,,并且以后可以閱讀大量文章,,以深入了解深度學(xué)習(xí)項目的步驟以及使用交叉驗證評估模型技能的重要性。

1.安裝TensorFlow和tf.keras

在本節(jié)中,,您將發(fā)現(xiàn)什么是tf.keras,,如何安裝以及如何確認(rèn)它已正確安裝。

1.1什么是Keras和tf.keras,?

Keras是一個用Python編寫的開源深度學(xué)習(xí)庫,。

該項目由Francois Chollet于2015年啟動。它迅速成為開發(fā)人員的流行框架,,甚至成為最受歡迎的深度學(xué)習(xí)庫之一,。

在2015-2019年期間,使用TensorFlow,,Theano和PyTorch等數(shù)學(xué)庫開發(fā)深度學(xué)習(xí)模型非常麻煩,,需要數(shù)十甚至數(shù)百行代碼才能完成最簡單的任務(wù)。這些庫的重點是研究,,靈活性和速度,,而不是易用性。

Keras之所以受歡迎是因為該API簡潔明了,,允許僅用幾行代碼就可以定義,,適配和評估標(biāo)準(zhǔn)的深度學(xué)習(xí)模型。

 在2019年,,谷歌發(fā)布了他們的TensorFlow深度學(xué)習(xí)庫的新版本(TensorFlow 2),,該庫直接集成了Keras API,并將該接口提升為平臺上深度學(xué)習(xí)開發(fā)的默認(rèn)或標(biāo)準(zhǔn)接口,。

這種集成通常稱為tf.keras接口或API(“ tf ”是“ TensorFlow ”的縮寫),。這是為了將其與所謂的獨立Keras開源項目區(qū)分開來。

  • 獨立的Keras,。支持TensorFlow,,Theano和CNTK后端的獨立開源項目,。

  • tf.keras。Keras API已集成到TensorFlow 2,。

Keras中的Keras API實現(xiàn)被稱為“ tf.keras ”,,因為這是引用API時使用的Python習(xí)慣用法。首先,,導(dǎo)入TensorFlow模塊并將其命名為“ tf ”,;然后,通過調(diào)用tf.keras來訪問Keras API元素,;例如:



import tensorflow as tf

model = tf.keras.Sequential()

由于TensorFlow是Keras開源項目的事實上的標(biāo)準(zhǔn)后端,,因此集成意味著現(xiàn)在可以使用單個庫而不是兩個單獨的庫。此外,,獨立的Keras項目現(xiàn)在建議所有將來的Keras開發(fā)都使用tf.keras API,。

目前,我們建議使用TensorFlow后端的多后端Keras的Keras用戶在TensorFlow 2.0中切換到tf.keras,。tf.keras得到更好的維護(hù),,并與TensorFlow功能具有更好的集成。


 1.2如何安裝TensorFlow

在安裝TensorFlow之前,,請確保已安裝Python,,例如Python 3.6或更高版本。

如果您沒有安裝Python,,則可以使用Anaconda安裝它,。 

有很多方法可以安裝TensorFlow開源深度學(xué)習(xí)庫。

在工作站上安裝TensorFlow的最常見,,也許也是最簡單的方法是使用pip,。

例如,在命令行上,,您可以輸入:

sudo pip install tensorflow
本教程中的所有示例都可以在現(xiàn)代CPU上正常工作。如果要為GPU配置TensorFlow,,則可以在完成本教程后進(jìn)行操作,。 

1.3如何確認(rèn)已安裝TensorFlow

一旦安裝了TensorFlow,重要的是確認(rèn)庫已成功安裝并且可以開始使用它,。

 如果TensorFlow未正確安裝或在此步驟上引發(fā)錯誤,,則以后將無法運行示例。

創(chuàng)建一個名為versions.py的新文件,,并將以下代碼復(fù)制并粘貼到該文件中,。

# 查看版本import tensorflowprint(tensorflow.__version__)

保存文件,然后打開命令行并將目錄更改為保存文件的位置,。

然后輸入:

python versions.py
 

輸出版本信息確認(rèn)TensorFlow已正確安裝,。

這也向您展示了如何從命令行運行Python腳本,。我建議以這種方式從命令行運行所有代碼。

如果收到警告消息

有時,,當(dāng)您使用tf.keras API時,,可能會看到警告打印。

這可能包括以下消息:您的硬件支持TensorFlow安裝未配置為使用的功能,。

我的工作站上的一些示例包括:

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMAXLA service 0x7fde3f2e6180 executing computations on platform Host. Devices:StreamExecutor device (0): Host, Default Version

這些是信息性消息,,不會阻止您執(zhí)行代碼。您現(xiàn)在可以忽略此類型的消息,。

既然您知道tf.keras是什么,,如何安裝TensorFlow以及如何確認(rèn)您的開發(fā)環(huán)境正在工作,讓我們看看TensorFlow中深度學(xué)習(xí)模型的生命周期,。

2.深度學(xué)習(xí)模型生命周期

在本部分中,,您將發(fā)現(xiàn)深度學(xué)習(xí)模型的生命周期以及可用于定義模型的兩個tf.keras API。

2.1五步模型生命周期

模型具有生命周期,,這一非常簡單的知識為建模數(shù)據(jù)集和理解tf.keras API提供了基礎(chǔ),。

生命周期中的五個步驟如下:

  1. 定義模型。

  2. 編譯模型,。

  3. 擬合模型,。

  4. 評估模型。

  5. 作出預(yù)測,。

讓我們依次仔細(xì)研究每個步驟,。

定義模型

定義模型要求您首先選擇所需的模型類型,然后選擇體系結(jié)構(gòu)或網(wǎng)絡(luò)拓?fù)洹?/span>

從API的角度來看,,這涉及到定義模型的各層,,為每個層配置許多節(jié)點和激活功能,以及將各層連接在一起成為一個內(nèi)聚模型,。

可以使用Sequential API或Functional API定義模型,,我們將在下一部分中進(jìn)行介紹。

# 定義模型model = ...

編譯模型

編譯模型要求首先選擇要優(yōu)化的損失函數(shù),,例如均方誤差或交叉熵,。

它還要求您選擇一種算法來執(zhí)行優(yōu)化過程,通常是隨機梯度下降,。它還可能要求您選擇任何性能指標(biāo),,以在模型訓(xùn)練過程中進(jìn)行跟蹤。

從API的角度來看,,這涉及調(diào)用函數(shù)以使用選定的配置來編譯模型,,這將準(zhǔn)備有效使用已定義的模型所需的適當(dāng)數(shù)據(jù)結(jié)構(gòu)。

可以將優(yōu)化器指定為已知優(yōu)化器類的字符串,,例如,,“ sgd ”用于隨機梯度下降,,或者您可以配置優(yōu)化器類的實例并使用該實例。

有關(guān)受支持的優(yōu)化器的列表,,請參見:

  • tf.keras優(yōu)化器

# compile the modelopt = SGD(learning_rate=0.01, momentum=0.9)model.compile(optimizer=opt, loss='binary_crossentropy')

三種最常見的損失函數(shù)是:

  • binary_crossentropy '用于二進(jìn)制分類,。

  • sparse_categorical_crossentropy '用于多類分類。

  • “ mse ”(均方誤差)進(jìn)行回歸,。

model.compile(optimizer='sgd', loss='mse')

有關(guān)受支持的損失函數(shù)的列表,,請參見:

  • tf.keras損失函數(shù)

指標(biāo)定義為已知指標(biāo)函數(shù)的字符串列表或要調(diào)用以評估預(yù)測的函數(shù)列表。

有關(guān)支持的指標(biāo)的列表,,請參閱:

  • tf.keras指標(biāo)

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


擬合模型

擬合模型要求您首先選擇訓(xùn)練配置,,例如歷元數(shù)(遍歷訓(xùn)練數(shù)據(jù)集)和批處理大小(歷時中用于估計模型誤差的樣本數(shù)),。

訓(xùn)練應(yīng)用選定的優(yōu)化算法以最小化選定的損失函數(shù),,并使用誤差算法的反向傳播更新模型。

擬合模型是整個過程中很慢的部分,,可能需要幾秒鐘到幾小時到幾天不等,,具體取決于模型的復(fù)雜性,所使用的硬件以及訓(xùn)練數(shù)據(jù)集的大小,。

從API角度來看,,這涉及到調(diào)用一個函數(shù)來執(zhí)行訓(xùn)練過程。該功能將阻止(不返回),,直到訓(xùn)練過程完成,。

...# 擬合模型model.fit(X, y, epochs=100, batch_size=32)

在擬合模型時,進(jìn)度條將總結(jié)每個時期的狀態(tài)和整個培訓(xùn)過程,。通過將“ verbose ”參數(shù)設(shè)置為2,,可以將其簡化為每個時期的模型性能的簡單報告。通過將“ verbose ” 設(shè)置為0,,可以在訓(xùn)練過程中關(guān)閉所有輸出,。

...# 擬合模型model.fit(X, y, epochs=100, batch_size=32, verbose=0)

評估模型

評估模型需要首先選擇用于評估模型的數(shù)據(jù)集。這應(yīng)該是訓(xùn)練過程中未使用的數(shù)據(jù),,以便在對新數(shù)據(jù)進(jìn)行預(yù)測時,,我們可以獲得模型性能的無偏估計。

模型評估的速度與您要用于評估的數(shù)據(jù)量成正比,,盡管它比訓(xùn)練要快得多,,因為模型沒有改變,。

從API角度來看,,這涉及使用保持?jǐn)?shù)據(jù)集調(diào)用函數(shù),并獲得損失以及可能報告的其他指標(biāo),。

...# 評估模型loss = model.evaluate(X, y, verbose=0)

做出預(yù)測

做出預(yù)測是生命周期的最后一步,。這就是為什么我們首先要模型的原因,。

它要求您具有需要預(yù)測的新數(shù)據(jù),例如,,在沒有目標(biāo)值的情況下,。

從API的角度來看,您只需調(diào)用一個函數(shù)即可對類標(biāo)簽,,概率或數(shù)值進(jìn)行預(yù)測:無論您將模型設(shè)計為要預(yù)測什么,。

您可能需要保存模型,然后再加載模型以進(jìn)行預(yù)測,。在開始使用模型之前,,您也可以選擇使模型適合所有可用數(shù)據(jù)。

現(xiàn)在我們已經(jīng)熟悉了模型的生命周期,,讓我們看一下使用tf.keras API構(gòu)建模型的兩種主要方法:順序模型和功能模型,。

...# 預(yù)測yhat = model.predict(X)

2.2順序模型API(簡單)

順序模型API是最簡單的,也是我推薦的API,,尤其是在入門時,。

之所以稱其為“ 順序的 ”,是因為它涉及定義一個順序類,,并以線性方式從輸入到輸出逐層向模型添加圖層,。

下面的示例定義了一個順序MLP模型,該模型接受八個輸入,,一個隱藏層包含10個節(jié)點,,然后一個輸出層包含一個節(jié)點以預(yù)測數(shù)值。

#使用順序api定義的模型的示例from tensorflow.keras import Sequentialfrom tensorflow.keras.layers import Dense#定義模型model = Sequential()model.add(Dense(10, input_shape=(8,)))model.add(Dense(1))

請注意,,網(wǎng)絡(luò)的可見層由第一個隱藏層上的“ input_shape ”參數(shù)定義,。這意味著在上面的示例中,模型期望一個樣本的輸入為八個數(shù)字的向量,。

順序API易于使用,,因為在添加所有圖層之前一直調(diào)用model.add()

例如,,這是一個具有五個隱藏層的深層MLP,。

#使用順序api定義的模型的示例

from tensorflow.keras import Sequentialfrom tensorflow.keras.layers import Dense# 定義模型model = Sequential()model.add(Dense(100, input_shape=(8,)))model.add(Dense(80))model.add(Dense(30))model.add(Dense(10))model.add(Dense(5))model.add(Dense(1))

2.3模型API(高級)

模型API更復(fù)雜,但也更靈活,。

它涉及顯式地將一層的輸出連接到另一層的輸入,。每個連接均已指定。

首先,,必須通過Input類定義輸入層,,并指定輸入樣本的形狀。定義模型時,,必須保留對輸入層的引用,。

...#定義層x_in = Input(shape=(8,))

接下來,,可以通過調(diào)用層并傳遞輸入層來將完全連接的層連接到輸入。這將返回對該新層中的輸出連接的引用,。

...x = Dense(10)(x_in)

然后,,我們可以用相同的方式將其連接到輸出層。

...x_out = Dense(1)(x)

連接后,,我們定義一個Model對象并指定輸入和輸出層,。下面列出了完整的示例。

#使用功能性API定義的模型的示例

from tensorflow.keras import Modelfrom tensorflow.keras import Inputfrom tensorflow.keras.layers import Dense#定義層x_in = Input(shape=(8,))x = Dense(10)(x_in)x_out = Dense(1)(x)#定義模型model = Model(inputs=x_in, outputs=x_out)

這樣,,它允許進(jìn)行更復(fù)雜的模型設(shè)計,,例如可能具有多個輸入路徑(分離向量)的模型和具有多個輸出路徑(例如單詞和數(shù)字)的模型。

習(xí)慣了該功能的API可能會很有趣,。

有關(guān)功能性API的更多信息,,請參見:

  • TensorFlow中的Keras功能API

既然我們熟悉了模型生命周期以及可用于定義模型的兩個API,那么讓我們來看一下開發(fā)一些標(biāo)準(zhǔn)模型,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多