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.Dataset 或iterator對象作為輸入參數
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
