標籤:

【消息】Keras 2參上!這次也請大家多多關照哦

昨天,有人在群里po了一條消息:

果然……今天早晨起床鋪天蓋地都是Keras 2發布的消息,嚇得我趕緊看了看Blog。

好吧,Blog里也沒有太重要的事,大概說了三件事。第一,Keras更新到2.x版本了。第二,API變化了很多,並且是一個Long-term support的版本,這些API會一直用好多年。三,Keras以後會向兩個方向發展,作為TensorFlow內置的一部分and作為單獨的集成很多Backend的API

在本文里,我們快速瀏覽一下Keras 2的變化。

定位變更

Keras 2將Keras定位為「API」而不是「Library」,其實Keras本來就不算很完整的Library,也算是重新強調自身的定位吧。另外,在介紹Keras的設計原則時,移除了「極簡主義」,代之以「用戶友好」

移除的API

  • 永久移除了Maxout,Timedistributed和Highway
  • 移除了AtrousConvolution卷積
  • 在高級激活函數中移除了SReLU,ParametricSoftplus
  • 移除了若干種損失函數和metrics
  • BatchNormalization不再支持mode選擇

變更的API

  • 原先的目標函數「objectives」更名為損失函數「losses」
  • 權重初始化由initializations變為initializers

  • 普通卷積的API由全拼Convolution1D,Convolution2D等變更為簡寫Conv1D,Conv2D
  • Merge層另立門戶,由單層多merge模式變為每種merge的模式單獨列一個層類,每種merge模式也分理出單獨的一個函數用於處理tensor。
  • image_dim_ordering參數變為image_data_format,並且取值從原來的「tf」/「th」變更為「channel_last」或「channel_first」,更確切的指明了data_format的特點。
  • 反卷積層改稱為Conv2DTranspose

  • 參數的變更:Dense的output_dim變為units,訓練網路時nb_epoch變為epochs,LSTM的「batch_input_shape」現在被分割為「input_shape」和「batch_size」兩個參數。Model構建時input,output參數變更為inputs,outputs。Conv層的boarder_mode變更為padding,sub_sampling變更為strides,nb_cols和nb_rows被單個參數kernel_size代替。
  • 約束項的W_constraint和b_constraint變更為「kernel_constraint」和「bias_constraint」。initializers和regularizers也發生了類似的變化。
  • applications模塊提供了更靈活的用法,支持通過參數指定卷積層到全連接層過度時的pooling方式。

新增的API

  • 新增了新的數據集boston_housing
  • Conv層新增參數dilation_rate,即原先的AtrousConvolution層由普通Conv層設置dilation_rate實現。
  • utils提供了使用定製類的方案

粗粗瀏覽一下,源代碼的結構和基本工作原理好像沒有改變,主要是API的變更。代碼內部的變化也是有的,如BN,模型的載入等。

Keras 2推的應該比較……倉促,感覺還有很多粗糙的地方,相關文檔與指導也非常匱乏,如非必要建議還是先不要升級。這裡總結的變更一定是有所遺漏的,時間關係內部實現的變化我也沒有細看,有時間再細說。

這次先這樣, 我先趕畢業論文,下次再細聊,回見!

對了,中文文檔可能要過好幾天才會更新,因為實在沒空。各位想幫忙的更新的話直接在github上提PR就好,地址是MoyanZitto/keras-cn,完了會統一處理,多謝!

推薦閱讀:

FancyKeras-數據的輸入(花式)
時間序列與回歸預測(一)
自己實現黑白圖片自動上色AI(一)
keras中embedding層是如何將一個正整數(下標)轉化為具有固定大小的向量的?

TAG:Keras |