TensorFlow和keras的前世今生以及keras和tf.keras的對比

一,Keras和TensorFlow的歷史糾葛

在這裏插入圖片描述

  • Keras 最初是由 Google AI 開發人員/研究人員 Francois Chollet 創建,並於 2015 年 3 月 27 日將 Keras 的第一個版本 commit 並 release 到他的 GitHub。
  • TensorFlow 從 Keras v1.1.0 發行版開始成爲 Keras 的默認後端(在 v1.1.0 之前,Keras 的默認後端都是 Theano)。
  • tf.keras 在 TensorFlow v1.10.0 中被引入TensorFlow中。
  • 谷歌在 2019 年 6 月發佈 TensorFlow 2.0,並宣佈 Keras 現在是 TensorFlow 的官方高級 API。隨後 Keras 2.3.0 的發佈,Francois 聲明:
    • 這是 Keras v2.3.0 是首個與 tf.keras 同步的版本;
    • 這也將是最後一個支持除 TensorFlow 以外的後端(即 Theano,CNTK 等)的最終版本。
    • 最重要的是,所有深度學習從業人員都應將其代碼轉換成 TensorFlow 2.0 和 tf.keras 軟件包。原始的 keras 軟件包仍會接收 bug 並修復。

在這裏插入圖片描述

二,keras和tf.keras簡介

1,keras簡介
  • 基於python的高級神經網絡API
  • Francois Chollet於2014-2015年編寫Keras
  • 以Tensorflow、CNTK或者Theano爲後端運行,keras必須有後端纔可以運行
    • 後端可以切換,現在多用tensorflow
  • 極方便於快速實驗,幫助用戶以最少的時間驗證自己的想法
2,tf.keras簡介
  • Tensorflow對keras API規範的實現
  • 相對於以tensorflow爲後端的keras,Tensorflow-keras與Tensorflow結合更加緊密
  • 實現在tf.keras空間下

三,keras和tf.keras的區別

  • Tf.keras全面支持eager mode
    • 只是用keras.Sequential和keras.Model時沒有影響
    • 自定義Model內部運算邏輯的時候會有影響
      • Tf低層API可以使用keras的model.fit等抽象
      • 適用於研究人員
  • Tf.keras 支持基於tf.data的模型訓練
  • Tf.keras 支持TPU訓練
  • Tf.keras 支持tf.distribution的分佈式策略

四,keras和tf.keras的聯繫

  • 基於同一套API
    • keras程序可以通過改導入方式輕鬆轉爲tf.keras程序
    • 反之可能不成立,因爲tf.keras有其他特性
  • 相同的JSON和HDF5模型序列化格式和語義