終於!Keras官方中文版文檔正式發布了

2020-12-04 機器之心Pro

今年 1 月 12 日,Keras 作者 Franois Chollet 在推特上表示因為中文讀者的廣泛關注,他已經在 GitHub 上展開了一個 Keras 中文文檔項目。而昨日,Franois Chollet 再一次在推特上表示 Keras 官方文檔已經基本完成!他非常感謝翻譯和校對人員兩個多月的不懈努力,也希望 Keras 中文使用者能繼續幫助提升文檔質量。

這一次發布的是 Keras 官方中文文檔,它得到了嚴謹的校對而提升了整體質量。但該項目還在進行中,雖然目前已經上線了很多 API 文檔和使用教程,但仍然有一部分內容沒有完成。其實早在官方中文文檔出現以前,就有開發者構建了 Keras 的中文文檔,而且很多讀者都在使用 MoyanZitto 等人構建的中文文檔。

Keras 官方文檔:https://keras.io/zh/

Keras 第三方文檔:http://keras-cn.readthedocs.io/en/latest/

以下我們將簡要介紹這次官方發布的 Keras 文檔。

Keras 是一個用 Python 編寫的高級神經網絡 API,它能夠以 TensorFlow、CNTK、或者 Theano 作為後端運行。Keras 的開發重點是支持快速的實驗。能夠以最小的時延把你的想法轉換為實驗結果,是做好研究的關鍵。

如果你有如下需求,請選擇 Keras:

允許簡單而快速的原型設計(用戶友好,高度模塊化,可擴展性)。

同時支持卷積神經網絡和循環神經網絡,以及兩者的組合。

在 CPU 和 GPU 上無縫運行與切換。

Keras 兼容的 Python 版本: Python 2.7-3.6。

Keras 相對於其它深度學習庫非常容易構建:首先它提供一致和簡單的 API;其次,它提供獨立的、完全可配置的模塊構成序列或圖表以完成模型;最後,作為新的類和函數,新的模塊很容易擴展。這樣說可能比較抽象,但正如文檔中所描述的,我們甚至在 30 秒就能快速上手 Keras。所以在坑外徘徊或準備入坑 Keras 的小夥伴可以開心地開始你們的 30 秒。

快速開始:30 秒上手 Keras

Keras 的核心數據結構是 model,一種組織網絡層的方式。最簡單的模型是 Sequential 模型,它是由多網絡層線性堆疊的棧。對於更複雜的結構,你應該使用 Keras 函數式 API,它允許構建任意的神經網絡圖。

Sequential 模型如下所示:

from keras.models import Sequentialmodel = Sequential()

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

from keras.layers import Densemodel.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))

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

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.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)

構建一個問答系統,一個圖像分類模型,一個神經圖靈機,或者其他的任何模型,就是這麼的快。深度學習背後的思想很簡單,那麼它們的實現又何必要那麼痛苦呢?

使用簡介

Keras 模型的使用一般可以分為順序模型(Sequential)和 Keras 函數式 API,順序模型是多個網絡層的線性堆疊,而 Keras 函數式 API 是定義複雜模型(如多輸出模型、有向無環圖,或具有共享層的模型)的方法。以下將簡要介紹兩種模型的使用方法:

1.Keras 順序模型

你可以通過將層的列表傳遞給 Sequential 的構造函數,來創建一個 Sequential 模型:

from keras.models import Sequentialfrom keras.layers import Dense, Activationmodel = Sequential([Dense(32, input_shape=(784,)),Activation('relu'),Dense(10),Activation('softmax'),])

也可以使用 .add() 方法將各層添加到模型中:

model = Sequential()model.add(Dense(32, input_dim=784))model.add(Activation('relu'))

如下展示了一個完整的模型,即基於多層感知器 (MLP) 的 softmax 多分類:

import kerasfrom keras.models import Sequentialfrom keras.layers import Dense, Dropout, Activationfrom keras.optimizers import SGD# 生成虛擬數據import numpy as npx_train = np.random.random((1000, 20))y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)x_test = np.random.random((100, 20))y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)model = Sequential()# Dense(64) 是一個具有 64 個隱藏神經元的全連接層。# 在第一層必須指定所期望的輸入數據尺寸,在這裡是一個 20 維的向量。model.add(Dense(64, activation='relu', input_dim=20))model.add(Dropout(0.5))model.add(Dense(64, activation='relu'))model.add(Dropout(0.5))model.add(Dense(10, activation='softmax'))sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])model.fit(x_train, y_train,epochs=20,batch_size=128)score = model.evaluate(x_test, y_test, batch_size=128)

2. Keras 函數式 API

利用函數式 API,可以輕易地重用訓練好的模型:可以將任何模型看作是一個層,然後通過傳遞一個張量來調用它。注意,在調用模型時,您不僅重用模型的結構,還重用了它的權重。

以下是函數式 API 的一個很好的例子:具有多個輸入和輸出的模型。函數式 API 使處理大量交織的數據流變得容易。

來考慮下面的模型。我們試圖預測 Twitter 上的一條新聞標題有多少轉發和點讚數。模型的主要輸入將是新聞標題本身,即一系列詞語,但是為了增添趣味,我們的模型還添加了其他的輔助輸入來接收額外的數據,例如新聞標題的發布的時間等。該模型也將通過兩個損失函數進行監督學習。較早地在模型中使用主損失函數,是深度學習模型的一個良好正則方法。

模型結構如下圖所示:

讓我們用函數式 API 來實現它(詳細解釋請查看中文文檔):

from keras.layers import Input, Embedding, LSTM, Densefrom keras.models import Model# 標題輸入:接收一個含有 100 個整數的序列,每個整數在 1 到 10000 之間。# 注意我們可以通過傳遞一個 `name` 參數來命名任何層。main_input = Input(shape=(100,), dtype='int32', name='main_input')# Embedding 層將輸入序列編碼為一個稠密向量的序列,每個向量維度為 512。x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)# LSTM 層把向量序列轉換成單個向量,它包含整個序列的上下文信息lstm_out = LSTM(32)(x)auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)auxiliary_input = Input(shape=(5,), name='aux_input')x = keras.layers.concatenate([lstm_out, auxiliary_input])# 堆疊多個全連接網絡層x = Dense(64, activation='relu')(x)x = Dense(64, activation='relu')(x)x = Dense(64, activation='relu')(x)# 最後添加主要的邏輯回歸層main_output = Dense(1, activation='sigmoid', name='main_output')(x)model = Model(inputs=[main_input, auxiliary_input], outputs=[main_output, auxiliary_output])model.compile(optimizer='rmsprop', loss='binary_crossentropy',loss_weights=[1., 0.2])model.fit([headline_data, additional_data], [labels, labels],epochs=50, batch_size=32)model.compile(optimizer='rmsprop',loss={'main_output': 'binary_crossentropy', 'aux_output': 'binary_crossentropy'},loss_weights={'main_output': 1., 'aux_output': 0.2})# 然後使用以下方式訓練:model.fit({'main_input': headline_data, 'aux_input': additional_data},{'main_output': labels, 'aux_output': labels},epochs=50, batch_size=32)

以上只是一個簡單的案例,Keras 函數式 API 還有非常多的應用案例,包括層級共享、有向無環圖和殘差網絡等頂尖視覺模型,讀者可以繼續閱讀中文文檔了解更多

文檔的後一部分更多是描述 Keras 中常用的函數與 API,包括 Keras 模型、層級函數、預處理過程、損失函數、最優化方法、數據集和可視化等。這些 API 和對應實現的功能其實很多時候可以在實際使用的時候再查找,當然最基本的 API 我們還是需要了解的。以下將簡要介紹 Keras 模型和層級 API,其它的模塊請查閱原中文文檔。

Keras 模型

在 Keras 中有兩類模型,順序模型 和 使用函數式 API 的 Model 類模型。這些模型有許多共同的方法:

model.summary(): 列印出模型概述信息。它是 utils.print_summary 的簡捷調用。model.get_config(): 返回包含模型配置信息的字典。通過以下代碼,就可以根據這些配置信息重新實例化模型:

config = model.get_config()model = Model.from_config(config)# or, for Sequential:model = Sequential.from_config(config)

model.get_weights(): 返回模型權重的張量列表,類型為 Numpy array。model.set_weights(weights): 從 Nympy array 中為模型設置權重。列表中的數組必須與 get_weights() 返回的權重具有相同的尺寸。model.to_json(): 以 JSON 字符串的形式返回模型的表示。請注意,該表示不包括權重,只包含結構。你可以通過以下代碼,從 JSON 字符串中重新實例化相同的模型(帶有重新初始化的權重):

from keras.models import model_from_jsonjson_string = model.to_json()model = model_from_json(json_string)

model.to_yaml(): 以 YAML 字符串的形式返回模型的表示。請注意,該表示不包括權重,只包含結構。你可以通過以下代碼,從 YAML 字符串中重新實例化相同的模型(帶有重新初始化的權重):

from keras.models import model_from_yamlyaml_string = model.to_yaml()model = model_from_yaml(yaml_string)

model.save_weights(filepath): 將模型權重存儲為 HDF5 文件。model.load_weights(filepath, by_name=False): 從 HDF5 文件(由 save_weights 創建)中加載權重。默認情況下,模型的結構應該是不變的。如果想將權重載入不同的模型(部分層相同),設置 by_name=True 來載入那些名字相同的層的權重。

Keras 層級

所有 Keras 層都有很多共同的函數:

layer.get_weights(): 以 Numpy 矩陣的形式返回層的權重。layer.set_weights(weights): 從 Numpy 矩陣中設置層的權重(與 get_weights 的輸出形狀相同)。layer.get_config(): 返回包含層配置的字典。此圖層可以通過以下方式重置:

layer = Dense(32)config = layer.get_config()reconstructed_layer = Dense.from_config(config)

如果一個層具有單個節點 (i.e. 如果它不是共享層), 你可以得到它的輸入張量,輸出張量,輸入尺寸和輸出尺寸:

layer.inputlayer.outputlayer.input_shapelayer.output_shape

如果層有多個節點,您可以使用以下函數:

layer.get_input_at(node_index)layer.get_output_at(node_index)layer.get_input_shape_at(node_index)layer.get_output_shape_at(node_index)

這些是 Keras 模型與層級基本的函數,文檔的中心內容也是這一部分和下面描述的 API 用途與參數,它包括完整模型所需要的各個模塊,包括數據、預處理、網絡架構、訓練、評估和可視化等。但這一部分我們並不會介紹,因為很多時候我們只有在遇到未知的函數時才會詳細查閱。

Keras 官方中文文檔,歡迎各位徘徊者入坑

相關焦點

  • 喜大普奔,Keras 官方中文版文檔發布啦!
    雷鋒網 AI 研習社消息,日前,Keras 之父 Franois Chollet 在 twitter 上發布消息,宣稱 Keras 中文版本正式上線,同時,對所有做出貢獻的小夥伴們,他也表示由衷的感謝。
  • 福昕閱讀器6.0中文版正式發布
    福昕閱讀器6.0中文版正式發布 8月29日,福昕PDF閱讀器6.0中文版終於發布了,而這次發布,比同一版本的英文版晚了4個多月,期間不少用戶向福昕打聽中文版發布時間,同時催促儘快發布,甚至一些用戶批評「福昕不重視中國市場」。
  • Keras R語言接口正式發布,同時公開20個完整示例
    雷鋒網 AI科技評論消息,Keras R語言接口正式發布,並同時公開20個完整示例。這意味著Keras 本質上適合用於構建任意深度學習模型(從記憶網絡到神經圖靈機)兼容多種運行後端,例如TensorFlow、CNTK和 Theano如果你已經很熟悉Keras了,並且想要立刻體驗最新發布的R語言接口,請點擊如下網址:https://keras.rstudio.com,這裡有超過20個完整示例,相信有你需要的東西。
  • GitHub官方中文文檔翻譯上線:Fork成了分叉
    GitHub官方中文文檔翻譯上線:Fork成了分叉 近期微軟旗下的GitHub發布了簡體中文版的技術幫助文檔,能夠讓開發者用戶更好地理解GitHub上的操作規範。
  • OpenCV4.1 Python 最新中文版官方教程手冊開源發布(附PDF下載)
    OpenCV-Python Tutorials是官方提供的文檔,其內容全面、簡單易懂,使得初學者能夠快速上手使用。 2014年段力輝在當時已翻譯過OpenCV3.0,但時隔五年,如今的OpenCV4.1中許多函數和內容已經有所更新,因此有必要對該官方文檔再進行一次翻譯。 翻譯過程中難免有所疏漏,如發現錯誤,希望大家指出,謝謝支持。
  • Keras 2發布:實現與TensorFlow的直接整合
    事實上,繼續發展將會出現 Keras 技術規範的兩個不同實現:(a)TensorFlow 的內部實現(如 tf.keras),純由 TensorFlow 寫成,與 TensorFlow 的所有功能深度兼容;(b)外部的多後臺實現,同時支持 Theano 和 TensorFlow(並可能在未來有更多的後臺)。
  • Keras官方出調參工具了,然而Francois說先別急著用
    近日,Keras 官方發布了一個調參工具 Keras Tuner,提供一種 Keras 內的簡單便捷調參方式,以及可視化和分析服務。然而目前發布的版本還不成熟,Keras 作者 Franois Chollet 表示:大家先別用,API 還不穩定。
  • 「資源福利」OpenCV最新中文版官方教程來了
    OpenCV 中文版官方教程來了。OpenCV是計算機視覺中經典的專用庫,然而其中文版官方教程久久不來。近日,一款最新OpenCV4.1版本的完整中文版官方教程出爐,讀者朋友可以更好的學習了解OpenCV相關細節。教程來自objectdetection.cn。
  • [9.28更新] 經典新作石器時代:起源手遊中文版正式上架!
    [9.28更新] 經典新作石器時代:起源手遊中文版正式上架! 【9.28更新】石器時代新作手遊《石器時代:起源》中文版正式上架!
  • 《十問:霍金沉思錄》中文版正式發布
    3月14日消息,恰逢霍金逝世一周年,他的遺作《十問:霍金沉思錄》中文版也終於問世,由湖南科技出版社正式出版。發布會上,著名天體物理學家張雙南教授,著名行星科學家鄭永春研究員和龔曙光董事長分別進行了有關宇宙和人類命運思考的演講,隨後進行了專家對話和現場答疑環節。
  • 小白學CNN以及Keras的速成
    雷鋒網按:本文作者Sherlock,原文載於其知乎專欄深度煉丹,雷鋒網(公眾號:雷鋒網)已獲得其授權發布Keras Documentation 就是Keras的官方文檔,裡面可以查閱所有的函數,並且可以在github上看他的開原始碼,非常方便。安裝也很簡單,打開終端,輸入pip install keras 就可以等待安裝了。下面就給一個簡單的例子,來看一看Keras到底有多簡單。
  • 《熾焰帝國:十字軍東徵》官方中文版今日上架STEAM
    由著名遊戲廠商Phantagram製作,Blueside在Steam上負責發行的經典遊戲《熾焰帝國:十字軍東徵》於今日上線了官方中文版Steam發售頁面>>點擊這裡將其加入願望單,此前就有小道消息稱官方將製作中文版,這則消息曾在玩家群體中引起過熱議
  • 飛書正式發布新版本π 推出獨立APP飛書文檔
    字節跳動旗下企業協作平臺飛書今日正式推出全新版本「π」,發布獨立App「飛書文檔」,並在視頻會議、即時溝通等功能上宣布了重大更新。  過去一年中,字節跳動全體員工在飛書上創建了超過2000萬篇文檔,如果列印成A4紙,堆疊起來的高度接近珠穆朗瑪峰。謝欣表示,這些文檔不僅是企業知識的積累,更是企業一筆寶貴的財富。  發布獨立APP飛書文檔  據飛書總裁張楠介紹,飛書文檔具有三大特點:「為創作添翼、為協作打造、以移動為先」。
  • 中文版《ACMG遺傳變異分類標準與指南》發布—新聞—科學網
    與會遺傳學專家一致表示,該中文版指南的發布將有助於促進我國遺傳諮詢的標準化和正規化,進一步促進我國遺傳諮詢的發展,從而降低我國的出生缺陷率。 2015年,美國權威機構——美國醫學遺傳學與基因組學學會(ACMG)編寫和發布了《ACMG遺傳變異分類標準與指南》。
  • 萬興科技PDFelement 8.0版本全新發布:像操作Word一樣操作PDF文檔!
    來源:時刻頭條近日,萬興科技在北京隆重舉辦了「數字創意行業應用研討暨萬興科技2021新品發布會」,面向全球市場發布了10款創意軟體新品,覆蓋視頻創意、繪圖創意、文檔創意、圖片創意多維領域。其中,文檔創意領域,為了更好地賦能個體和企業在數字經濟時代的競爭中脫穎而出,萬興科技正式推出了企業級一站式PDF解決方案PDFelement 8.0版本(中文版為萬興PDF專家),在產品性能、新增功能和交互體驗三大方面進行了全面升級。
  • Keras vs PyTorch:誰是第一深度學習框架?
    兩大框架的連結:  Keras:https://github.com/keras-team/keras (https://keras.io/)  PyTorch:https://github.com/pytorch/pytorch  你想學習深度學習嗎?
  • 飛書新版本「π」正式發布:推出獨立文檔App、各功能與IM打通
    會上,飛書推出全新版本「π」,發布獨立App「飛書文檔」,並在視頻會議、即時溝通等功能上宣布了多項更新。在文檔方面,飛書總裁張楠表示,用戶可以在飛書文檔中「插入一切」,無論是音視頻、文件、表格,還是流程圖、投票、溝通群。此外,飛書文檔可進行跨設備使用。基於飛書的文檔模塊,飛書文檔App作為一款獨立應用也正式單獨對外發布。
  • Microsoft Dynamics CRM 4.0中文版正式中國上市
    今天,微軟(中國)公司在北京舉行了「英雄之選― Microsoft Dynamics CRM 4.0 新產品發布會」,正式宣布Microsoft Dynamics CRM 4.0中文版在中國上市。
  • 福利,PyTorch中文版官方教程來了
    機器之心整理參與:一鳴PyTorch 中文版官方教程來了。PyTorch 是近年來較為火爆的深度學習框架,然而其中文版官方教程久久不來。近日,一款完整的 PyTorch 中文版官方教程出爐,讀者朋友可以更好的學習了解 PyTorch 的相關細節了。教程作者來自 pytorchchina.com。
  • OFFICE07中文版15項全新功能快速解密
    明天,也就是11月30日,微軟將於北京舉辦「迎接新紀元」微軟 2007 Microsoft Office system, Windows Vista, Exchange Server 2007 產品發布會,向中國用戶正式推出Office 2007中文版。隨之正式發布的還有Windows Vista及Exchange Server 2007。