1. 程式人生 > 實用技巧 >tensorflow2.0中引入keras和原來的keras的差異

tensorflow2.0中引入keras和原來的keras的差異

1. 之前介紹過在tensorflow roadshow中介紹了tensorflow2.0的新特性,但是並未進行具體介紹,本文主要介紹tf中keras和原來的keras的差異。

2. tf.keras可以方便的構建我們需要的模型,主要的改變是將原來的tf.nn.xxx替換成了tf.keras.

區別:

1. tf.keras全面支援tensorflow的eager execution模式。當然,在程式碼中通過eager模式可以反應當前的梯度等,可能認為這個梯度會影響我們程式碼的執行效率,但是Eager execution相對於graph mode的效能劣勢,通過tf.function的imperative-to-graph變換來彌補。

2.tf.keras支援基於tf.data的模型訓練。基於lazy正規化、使用了多執行緒資料輸入管路,tf.data可以顯著提高模型訓練的效率。tf.keras.Mode.fit()直接支援tf.data.Datasetiterator物件作為輸入引數

3.tf.keras支援TPU訓練。由於TPU是Google自己研發的,因此我們可以將其把keras的優秀特性整合到tf,然後通過TPU完成加速。`tf.contrib.tpu.keras_to_tpu_model()`將一個tf.keras.Model物件轉換成一個可以在TPU上進行訓練的模型物件。

4.tf.contrib.saved_model.save_keras_model()可以將模型儲存為tensorflow的SavedModel格式。

兩者在語法上,在共同點上有很多,基於同一個API:如果不使用tf.keras的特有特性(見下文)的話,模型搭建、訓練、和推斷的程式碼應該是可以互換的。把import keras 換成from tensorflow import keras,所有功能都應該可以工作。反之則未必,因為tf.keras有一些keras不支援的特性。

參考:https://www.zhihu.com/question/313111229/answer/606660552