【消息】Keras 2參上!這次也請大家多多關照哦
01-29
昨天,有人在群里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 |