谷歌釋出 TensorFlow 1.4.0 版本,Keras 成為核心模組,API 變動較大

機器之心發表於2017-11-03

近日,TensorFlow 1.4.0 版本公佈在了 GitHub 上,它更新和完善了一些主要功能,修復了一些 bug,並做出了其他變動,其中 API 方面的變動較大。


GitHub 地址:https://github.com/tensorflow/tensorflow/releases/tag/v1.4.0

主要功能與提升

  • tf.keras 現在是 TensorFlow API 核心的一部分。
  • tf.data 現在是 TensorFlow API 核心的一部分。

  1.     API 現在讓步於後向相容性保證。
  2.    有關從 tf.contrib.dataAPI 遷移的指導,請參見          https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/contrib/data/README.md。
  3. 主要的新功能包括用於從 Python 生成器構建輸入通道的 Dataset.from_generator() 和應用自定義轉換功能的 Dataset.apply() 方法。
  4. 若干個自定義轉換功能已新增,包括 tf.contrib.data.batch_and_drop_remainder() 和

  • 為簡單的分散式 Estimator 訓練新增 train_and_evaluate。
  • 為計算 DCT-II 而新增 tf.spectral.dct。
  • (通過 GPU 和梯度支援)把梅爾頻率倒譜(Mel-Frequency Cepstral)係數支援新增到 tf.contrib.signal。
  • 為 Windows DLL 問題在 import tensorflow 上新增一個自我檢查。
  • 在 GPU 上為 tf.depth_to_space 新增 NCHW 支援。
  • TensorFlow 偵錯程式(tfdbg):

  1. 新增 eval 指令,以允許評估 tfdbg 命令列介面中獨斷的 Python/numpy 表示式。詳情參見除錯 TensorFlow 程式:https://www.tensorflow.org/programmers_guide/debugger。
  2. 可用性改進:常用的張量濾波器 has_inf_or_nan 現在被新增到 Session 包裝器,並預設 hook。因此沒有必要為客戶端再次呼叫.add_tensor_filter(tf_debug.has_inf_or_nan)。

  • SinhArcsinh (scalar) 分佈被新增到 contrib.distributions。
  • 開源 GANEstimator。
  • Estimator.export_savedmodel() 現在包含所有有效的、可從服務性輸入接收器(Serving Input Receiver)和所有可用的 ExportOutput 構建的服務性簽名。比如,除了分類性的輸出,一個分類器也許可以提供迴歸和預測性的輸出。從這些輸出中構建簽名允許 TF 服務通過不同的 API(分類、迴歸和預測)滿足請求。進而,serving_input_receiver_fn() 現在也許可指定作為輸入的節點的替代性子集。比如,這允許為接受原始張量而不是系列化的 tf.Example 分類器生成一個預測簽名。
  • 新增 tf.contrib.bayesflow.hmc。
  • 新增 tf.contrib.distributions.MixtureSameFamily。
  • 每次預設迭代之後總是重新調整 Dataset.shuffle()。
  • 新增 tf.contrib.bayesflow.metropolis_hastings。
  • 新增 log_rate parameter to tf.contrib.distributions.Poisson。
  • 擴充套件 tf.contrib.distributions.bijector API 以處理一些 non-injective 轉換。
  • Java:

  1. 用於提高型別安全性的泛型。
  2. 支援多維度弦張量。
  3. 支援在 Linux 和 OS X 上載入自定義運算。

  • 我們所有的預構建二進位制已通過 CUDA 8 和 cuDNN 6 構建完成。我們將發行帶有 CUDA 9 和 cuDNN 7 的 TensorFlow 1.5 版本。

Bug 修復與其他改變

  • tf.nn.rnn_cell.DropoutWrapper 現在更在意放棄 LSTM 狀態。具體來講,它不再放棄一個 LSTMStateTuple 的 c(記憶體)狀態。新的行為為 LSTM 和堆疊 LSTM 帶來了合適的 dropout 行為。這一 Bug 修復遵從了已發表文獻的建議,但是一個行為改變。狀態 dropout 行為也許通過新的 dropout_state_filter_visitor 引數被自定義。
  • 刪除 tf.contrib.training.python_input。通過新的 tf.contrib.data.Dataset.from_generator 方法,相同行為在一個更加靈活和可重用的工具包中是可用的。
  • 修復 tf.contrib.distributions.Affine 錯誤計算的 log-det-jacobian。
  • 修復 tf.random_gamma 錯誤處理的非批處理、標量繪製。
  • 在 TensorForest TreePredictionsV4Op 中重新解決一個競賽條件。
  • 谷歌雲端儲存檔案系統、Amazon S3 檔案系統和 Hadoop 檔案系統支援現在是預設的構建選項。
  • 自定義操作庫必須連結到 ibtensorflow_framework.so(安裝在 tf.sysconfig.get_lib())。
  • 改變 RunConfig 預設行為從而不設定一個隨機種子,保持隨機行為在分散式工作器上獨立地隨機。我們期待這可從整體上提升訓練效能。依賴於決定論的模型應該明確地設定一個隨機種子。

API 的突破性改變

  • tf.contrib.data.rejection_resample() 功能的簽名已被改變。它現在返回到一個可用作 Dataset.apply() 引數的函式。
  • 刪除 tf.contrib.data.Iterator.from_dataset() 方法,並使用 Dataset.make_initializable_iterator()。
  • 刪除很少使用的和不必要的 tf.contrib.data.Iterator.dispose_op()。
  • 通過非後向、可相容的方式重新排序一些 TFGAN 損失函式。

已知問題

  • 在 Python 3 中,Dataset.from_generator() 不支援 Unicode 字串。你必須早生成器產生它們之前把所有字串轉化為位元組物件。

下載

  • 原始碼(zip):https://github.com/tensorflow/tensorflow/archive/v1.4.0.zip
  • 原始碼(tar.gz):https://github.com/tensorflow/tensorflow/archive/v1.4.0.tar.gz

相關文章