成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Keras編寫你的第一個神經網絡,用不了30行代碼!

譯文
人工智能 深度學習
不妨了解神經網絡的簡單概述,并學習如何用Keras通過短短幾行代碼編寫你的第一個神經網絡。

【51CTO.com快譯】回想起剛接觸AI時,我清楚地記得一些概念看起來有多難。閱讀神經網絡的簡單介紹常常碰到科學論文,里面的公式有你從未見過的符號,但開始編寫第一個神經網絡實際上容易得多!

那么神經網絡是什么呢?

這個問題提得好!在自行用Python代碼編寫一個簡單的神經網絡之前,不妨介紹一下神經網絡以及為何它如此令人興奮!

HNC Software的聯合創始人Robert Hecht-Nielsen博士簡單地說。

……神經網絡是由許多簡單又高度互連的處理單元組成的計算系統,這些處理單元通過對外部輸入的動態狀態響應來處理信息。

——人工智能專家Maureen Caudill撰寫的《神經網絡入門:第一部分》,1989年2月

實際上,神經網絡是一組擅長識別信息或數據中模式的數學表達式。神經網絡通過一種模仿人類的感知來做到這點,但它不是像人類那樣查看圖片,而是表示以數字方式包含在Vector或Scalar中的信息(一個Vector只含一個數字)。

它通過層來傳遞該信息,一層的輸出充當下一層的輸入。經過這些層時,輸入通過權重和偏差加以修改,然后發送到激活函數以映射輸出。然后通過成本函數進行學習,該函數對實際輸出和所需輸出進行比較,這進而通過一種名為反向傳播的過程,幫助函數更改并調整權重和偏差,實現成本最小化。

對于我們實現的示例神經網絡,我們將使用MNIST數據集。

MNIST樣本數據集

圖1. MNIST樣本數據集

MNIST好比是“Hello World”數據集,因為它能夠非常簡明地演示神經網絡的功能。數據集由手寫數字組成,我們將訓練神經網絡識別和分類這些數字。

Keras登場

為了便于實現,我們將使用Keras框架。Keras是用Python編寫的一種高級API,它在TensorFlow和Theano等流行框架上運行,為機器學習從業人員提供了抽象層,以降低編寫神經網絡的固有復雜性。

建議你深入研究Keras說明文檔(https://keras.io/),以真正熟悉該API。另外強烈推薦Francois Chollet撰寫的《用Python做深度學習》一書,本教程的靈感源自此書。

該考驗GPU的時候了

我們在本教程中將使用Keras和TensorFlow后端,因此如果你尚未安裝其中任何一個,現在趕緊安裝,只需在終端中運行這些命令即可。如果你不單單想了解簡單的入門示例,最好搭建Anaconda環境,改用conda安裝以下內容。 

  1. pip3 install Keras  
  2. pip3 install Tensorflow 

你已安裝了第一個神經網絡所需的一切,現在打開常用的IDE,不妨導入我們所需的Python模塊! 

  1. from keras.datasets import mnist  
  2. from keras import models  
  3. from keras import layers  
  4. from keras.utils import to_categorical 

Keras有許多數據集可以用來幫助你學習,對我們來說幸好有MNIST這個數據集。Models和Layers這兩個模塊可幫助我們構建神經網絡,to_categorical用于數據編碼,不過稍后有詳細介紹。

我們已導入了所需的模塊,接下來應將數據集分成訓練集和測試集。只要用下面這一行即可完成。

  1. (train_images, train_labels), (test_images, test_labels) = mnist.load_data() 

在該例子中,我們的神經網絡通過對其輸出與標記數據進行比較來學習。可以把這看成我們讓神經網絡猜測大量的手寫數字,然后將猜測結果與實際標簽進行比較。隨后饋入結果,幫助模型調整權重和偏差,以便實現總成本最小化。

訓練集和數據集已建好,現在我們準備構建模型。

  1. network = models.Sequential()  
  2. network.add(layers.Dense(784, activation='relu', input_shape=(28 * 28,))) 
  3. network.add(layers.Dense(784, activation='relu', input_shape=(28 * 28,)))network.add(layers.Dense(10, activation='softmax'))network.compile(optimizer='adam' 
  4. loss='categorical_crossentropy' 
  5. metrics=['accuracy']) 

這看起來代碼有很多,但不妨分解一下。我們初始化名為network的順序模型。

  1. network = models.Sequential() 

然后我們添加神經網絡層。針對該例子,我們將使用密集層。密集層是指,每個神經元從上一層的所有神經元接收輸入。[784]和[10]指輸出空間的維數,這好比是后續層的輸入數;由于我們試圖解決的分類問題有10種可能的類別(數字0至9),最后層的潛在輸出是10個單位。激活參數指我們想要使用的激活函數,實際上激活函數根據給定的輸入來計算輸出。 最后,28 * 28的輸入形狀是指圖片的像素寬度和高度。 

  1. network.add(layers.Dense(784, activation='relu', input_shape=(28 * 28,)))  
  2. network.add(layers.Dense(784, activation='relu', input_shape=(28 * 28,)))  
  3. network.add(layers.Dense(10, activation='softmax')) 

一旦模型定義完畢,并添加了神經網絡層,我們只需用所選擇的優化器、所選擇的損失函數以及想用來評估模型性能的度量標準來編譯該模型。 

  1. network.compile(optimizer='adam' 
  2. loss='categorical_crossentropy' 
  3. metrics=['accuracy']) 

恭喜!你剛構建了你的第一個神經網絡!

現在你可能仍有幾個問題,比如relu和softmax是什么?adam又是誰?那些都是值得思考的問題……我們會在以后的文章中深入解釋這些問題。

將數據饋入到剛創建的模型之前,我們需要將輸入整形成模型可以讀取的格式。輸入的原始形狀是[60000,28,28],實際上代表60000個像素高度和寬度是28 x28的圖片。我們可以對數據進行整形,分為訓練[60000]圖片和測試[10000]圖片。 

  1. train_images = train_images.reshape((60000, 28 * 28))  
  2. train_images = train_images.astype('float32') / 255  
  3. test_images = test_images.reshape((10000, 28 * 28))  
  4. test_images = test_images.astype('float32') / 255 

除了整形數據外,我們還需要編碼數據。針對該例子,我們將使用分類編碼,這實際上將許多特征變成數值表示。 

  1. train_labels = to_categorical(train_labels)  
  2. test_labels = to_categorical(test_labels) 

我們的數據集已分成訓練集和測試集,而且模型經過編譯、數據經過整形和編碼,現在我們現在準備訓練神經網絡!為此,我們要調用fit函數,并傳遞所需的參數。

  1. network.fit(train_images, train_labels, epochs=5, batch_size=128) 

我們傳遞訓練圖片及其標簽,另外傳遞輪次(epoch)和批大小(batch_size),前者表明了向后傳播和向前傳播的數量,后者表明了每個向后/向前傳播的訓練樣本數量。

我們還想要設置性能衡量參數,以便搞清楚這個模型的效果有多好。 

  1. test_loss, test_acc = network.evaluate(test_images, test_labels)  
  2. print('test_acc:', test_acc, 'test_loss', test_loss) 

大功告成!你剛編寫了自己的神經網絡,整形并編碼了數據集,并擬合了訓練的模型。如果你首次運行Python腳本,Keras會下載MNIST數據集,開始訓練5輪。

使用測試輸出的訓練周期

你的測試準確度應該達到98%左右,這意味著模型運行測試時在98%的時間段內正確預測了數字,這對你的第一個神經網絡來說不賴!實際上,如果你的模型擬合過度/擬合不足,你希望同時查看測試結果和訓練結果,以便想出好主意。

鼓勵你調整一下層數、優化器、損失函數、輪次以及批大小,看看各自對模型的整體性能有何影響!

原文標題:Writing Your First Neural Net in Less Than 30 Lines of Code with Keras,作者:David Gündisch

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2023-05-06 12:47:41

2013-12-19 09:46:04

垃圾收集器

2021-07-07 06:04:33

人工智能Pytorch神經網絡

2017-08-29 09:40:26

JavaScript代碼神經網絡

2014-07-24 14:35:26

Linux內核模塊

2019-12-31 08:00:00

DebianLinuxApple Swift

2017-09-15 13:35:11

JavaScript神經網絡

2017-09-18 08:08:33

JavaScript神經網絡代碼

2021-04-07 13:38:27

Django項目視圖

2025-02-25 14:13:31

2022-10-17 10:28:05

Web 組件代碼

2020-05-27 11:10:54

KerasLSTM神經網絡

2010-03-15 10:37:46

Pthon腳本

2013-01-14 09:44:58

JavaScriptJSJS框架

2020-07-07 07:55:53

web app數據科學機器學習

2018-09-17 15:12:25

人工智能神經網絡編程語言

2024-08-22 08:21:10

算法神經網絡參數

2020-08-14 10:01:25

編程神經網絡C語言

2018-10-15 10:10:41

Linux內核補丁

2019-07-25 08:20:37

代碼開發神經網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产亚洲 | 欧美性大战久久久久久久蜜臀 | 久久青草av | 欧美成人aaa级毛片在线视频 | 精品1区2区3区 | 亚洲精品www.| 国产一二区视频 | 色偷偷噜噜噜亚洲男人 | 日韩不卡一二区 | 亚洲精品一区二区网址 | 日韩www | 欧美一级二级在线观看 | 九九热在线视频免费观看 | 免费一区二区三区 | 久久艹免费视频 | 伊人春色在线观看 | 亚洲精品国产成人 | 综合自拍 | 成人欧美一区二区三区黑人孕妇 | 欧美不卡视频一区发布 | 欧美区日韩区 | 国产精品免费在线 | www.国产精 | 美女天天操 | 欧美一区二区精品 | 国产 日韩 欧美 在线 | 日日干日日色 | 国产精品久久久久久久久久免费看 | 日韩1区2区 | 中文字幕一区二区在线观看 | 日本精品视频在线观看 | 亚洲天堂精品久久 | 夜色www国产精品资源站 | 国产a区| 成人在线中文字幕 | 精品免费国产视频 | 午夜伦4480yy私人影院 | 精品久久久网站 | 国产精品久久二区 | 高清av电影 | 国产精品综合一区二区 |