谷歌正式發布TensorFlow 1.5,究竟提升了哪些功能?

2021-01-07 機器之心Pro

昨天,谷歌在 GitHub 上正式發布了 TensorFlow 的最新版本 1.5.0,並開源了其代碼。支持 CUDA 9 和 cuDNN 7 被認為是本次更新的最重要部分。機器之心對這次更新的重大改變以及主要功能和提升進行了編譯介紹,原文請見文中連結。

GitHub 地址:https://github.com/tensorflow/tensorflow/releases/tag/v1.5.0原始碼(zip):https://github.com/tensorflow/tensorflow/archive/v1.5.0.zip原始碼(tar.gz):https://github.com/tensorflow/tensorflow/archive/v1.5.0.tar.gz

1.5.0 正式版

重大更新

預構建的二進位文件現在是針對 CUDA 9 和 cuDNN 7 構建的。從版本 1.6 開始,我們的預構建二進位文件將使用 AVX 指令。這也許會破壞較舊 CPUs 上的 TF。

主要功能和提升

Eager execution:預覽版現在可用。TensorFlow Lite:dev 預覽版現在可用。支持 CUDA 9 和 cuDNN 7加速線性代數(XLA):

添加 complex64 支持到 XLA 編譯器。bfloat 支持現已添加到 XLA 架構。使 XLA 和 XLA 一起工作。通過決定性執行程序來生成 XLA 圖。

tf.contrib:

tf.contrib.distributions:

添加 tf.contrib.distributions.Autoregressive。使 tf.contrib.distributions QuadratureCompound 類支持批處理。從參數中推斷 tf.contrib.distributions.RelaxedOneHotCategorical dtype。通過 quadrature_grid_and_prob vs quadrature_degree 使 tf.contrib.distributions 正交族參數化。添加 auto_correlation 到 tf.contrib.distributions。

添加 tf.contrib.bayesflow.layers,一個概率(神經)層的集合。添加 tf.contrib.bayesflow.halton_sequence。添加 tf.contrib.data.make_saveable_from_iterator。添加 tf.contrib.data.shuffle_and_repeat。添加新的自定義轉換: tf.contrib.data.scan()。tf.contrib.distributions.bijectors:

添加 tf.contrib.distributions.bijectors.MaskedAutoregressiveFlow。添加 tf.contrib.distributions.bijectors.Permute。添加 tf.contrib.distributions.bijectors.Gumbel。添加 tf.contrib.distributions.bijectors.Reshape。支持 Reshape bijector 中的 shape 推理(即,包含-1 的 shape)。

添加 streaming_precision_recall_at_equal_thresholds,一種計算流式精確度和時間、空間複雜度為 O(num_thresholds + size of predictions) 的調用的方法。更改 RunConfig 默認行為,不設置隨機種子,使隨機行為在分布式工作器上獨立地隨機。我們期待這可以普遍提高訓練表現。依賴決定論的模型應明確設置一個隨機種子。通過 absl.flags 替換 tf.flags 的實現。在 fp16 GEMM 中為 CUBLAS_TENSOR_OP_MATH 添加支持。在 NVIDIA Tegra 計算卡上為 CUDA 添加支持。

Bug 修復與其他更新

文檔更新:

明確你只能在 64 位機上安裝 TensorFlow。添加一個短文件解釋 Estimators 如何保存檢查點。為由 tf2xla 橋支持的操作添加文檔。修改 SpaceToDepth 和 DepthToSpace 文件中的小的書寫錯誤。更新 mfcc_mel_filterbank.h 和 mfcc.h 中的文檔命令,說明輸入域是幅度譜的平方,權重是在線性幅度譜(輸入的 sqrt)上完成的。修復 tf.distributions.bijectors.Bijector 中的文檔字符串書寫錯誤。tf.assert_equal 不再引發 ValueError。它現在引發 InvalidArgumentError,如文檔所述。更新「開始」文件和 API 介紹。

谷歌雲存儲 (GCS):

為 GCS 客戶端添加用戶空間 DNS 緩存。為 GCS 文件系統自定義請求超時。優化 GCS 的文件系統緩存。

Bug 修復

修復之前出現的整數變量分區後變成錯誤的 shape 的 bug。修復 Adadelta 的 CPU 和 GPU 實現的準確度 bug。修復當導入到 scope 時,import_meta_graph 處理分區變量時出現的 bug。警告:在以非空 import_scope 變量應用 import_meta_graph 之後,這可能會破壞帶已保存分區變量圖的加載中的檢查點。修復離線 debugger 中阻止查看事件的 bug。添加 WorkerService.DeleteWorkerSession 方法到 gRPC 接口,修復內存洩漏。確保你的主伺服器和輔助伺服器在相同版本的 TensorFlow 上運行,以避免兼容性問題。修復 BlockLSTM cell 的 peephole 實現中的 bug。通過重寫 log_det_jacobian 的 dtype 以在 TransformedDistribution 中匹配 log_prob。確保 tf.distributions.Multinomial 不會在 log_prob 中下溢。在此之前,一個整數變量的所有分區會以非分區變量的 shape 進行初始化;經過修復之後,可以正確地初始化。

其它

添加必要的 shape 直到支持 bfloat16。添加一種運行 ops 的方式,在 MonitoredSession 中使用階躍函數。添加 DenseFlipout 概率層(probabilistic layer)。添加一種新的 flag:ignore_live_threads,可用於訓練過程。如果將其設為 True,在成功完成訓練之後,它會在拆除基礎建設時忽略仍在運行的線程,而不會返回 RuntimeError。重新標準化 DenseVariational,以作為其它概率層的更簡化模板。tf.data 現在在數據集元素中支持 tf.SparseTensor。可以進行遍歷 Tensor 的計算。允許 SparseSegmentReduction ops 擁有丟失的 segment IDs。修改自定義導出策略以包含多維稀疏浮點數分裂(multidimensional sparse floatsplits)。由於 GPU 和 cuDNNv6 的支持,Conv2D、Conv2DBackpropInput、Conv2DBackpropFilter 現在支持任意的擴張。Estimator 現在支持 Dataset:input_fn 可以返回 Dataset 而不是 Tensors。添加 Revblock,一個可逆殘差層的節省內存的實現。減少 BFCAllocator 的內部碎片。添加 cross_entropy 和 kl_divergence 到 tf.distributions.Distribution 中。添加 tf.nn.softmax_cross_entropy_with_logits_v2,以允許標籤的反向傳播。GPU 後端現在使用 ptxas 以編譯生成的 PTX。BufferAssignment 的協議緩存轉儲(protocol buffer dump)現在已確定。改變 embedding op 以利用 DynamicStitch 的並行版本。添加對稀疏多維特徵列(sparse multidimensional feature columns)的支持。加速僅有一個值的稀疏浮點數列(sparse float columns)的案例。允許稀疏浮點數分裂(sparse float splits)以支持多價特徵列(multivalent feature columns)。添加 quantile 到 tf.distributions.TransformedDistribution。在 GPU 上添加對 tf.depth_to_space 的 NCHW_VECT_C 支持。在 GPU 上添加對 tf.space_to_depth 的 NCHW_VECT_C 支持。

API 變化

將 SqueezeDims 屬性在 C++ API 中重命名為 Axis,作為 Squeeze op。Stream::BlockHostUntilDone 返回 Status,而不是布爾值。Minor refactor:將 stats 文件從 stochastic 移動到 common 並刪除 stochastic。

相關焦點

  • 深度解讀TensorFlow,了解它的最新發展!
    Tensorboard是tensorflow內置的一個可視化工具,它通過將tensorflow程序輸出的日誌文件的信息可視化,使得tensorflow程序的理解、調試和優化更加簡單高效。Tensorboard的可視化依賴於tensorflow程序運行輸出的日誌文件,因而tensorboard和tensorflow程序在不同的進程中運行。
  • 玩轉TensorFlow?你需要知道這30功能
    地址是:tensorflow.org/tfx/?hl=zh-cn5)TFX 模型分析我最喜歡用 TensorFlow 模型分析功能去檢查模型的輸入數據或者模型推理過程中可能發生在某一小部分數據上的問題。
  • 資源| TensorFlow版本號升至1.0,正式版即將到來
    現在,TensorFlow 的一歲生日之後兩個月,TensorFlow 社區終於決定將 TensorFlow 的版本號升至 1.x,並也已於昨日發布了 TensorFlow 1.0.0-alpha,其新增了實驗性的 Java API,並且提升了對 Android 的支持。
  • 谷歌剛發布的深度學習動態計算圖工具TensorFlow Fold是什麼?
    7 日,谷歌通過博客正式發布了 TensorFlow Fold,該庫針對 TensorFlow 1.0 框架量身打造,可以幫助深度學習開發者根據不同結構的輸入數據建立動態的計算圖(Dynamic Computation Graphs),簡化了模型訓練階段對輸入數據的預處理過程,提升了系統的運行效率。
  • TensorFlow2.1正式版上線:最後一次支持Python2,進一步支持TPU
    去年 10 月,谷歌才發布了 TensorFlow 2.0 正式版。時隔三個月後,昨日官方發布了 TensorFlow 2.1,本次版本更新帶了了多項新特性、功能改進和 bug 修復。也就是說,如果使用 pip install tensorflow,則版本默認為是 gpu 版本(原始的 tensorflow-gpu 版本依然存在)。當然,不管有沒有英偉達版本的 GPU,tensorflow 依然能夠運行。如果需要使用 CPU 版本,用戶的安裝命令應該為:pip install tensorflow-cpu。
  • TensorFlow Lite發布重大更新!支持移動GPU、推斷速度提升4-6倍
    乾明 發自 凹非寺量子位 出品 | 公眾號 QbitAITensorFlow用於行動裝置的框架TensorFlow Lite發布重大更新,支持開發者使用手機等行動裝置的GPU來提高模型推斷速度。在進行人臉輪廓檢測的推斷速度上,與之前使用CPU相比,使用新的GPU後端有不小的提升。
  • 谷歌發布TensorFlow Lattice:得益於先驗知識,提升模型泛化能力
    ,谷歌科學家發布TensorFlow Lattice,這是一套預建的TensorFlow Estimators,易於使用,它相當於是TensorFlow運算符,用來構建點陣模型(lattice model)。
  • 終於來了,TensorFlow 新增官方 Windows 支持
    在谷歌的支持下,TensorFlow 已成為 GitHub 上最受歡迎的機器學習開源項目。同時,谷歌也在 TensorFlow 框架中進行過各類研究、開源了其中一些項目,這些研究涉及到自然語言處理、機器翻譯、圖像描述、圖像分類等等。谷歌在開發者博客上寫到:「原生的 Windows 版 TensorFlow 是自開源以來,我們工作的重中之重。
  • 機器學習庫 TensorFlow 1.9.0 發布,大量修復和改進
    機器學習庫 TensorFlow 1.9.0 已發布,更新內容如下:主要特點和改進1、tf.keras 文件升級: 新的基於 Keras
  • TensorFlow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。
  • Tensorflow 全網最全學習資料匯總之Tensorflow 的入門與安裝【2】
    下面是本文整理的資料內容:在安裝之前,這裡先列出一些對TensorFlow給出大略介紹的文章,其中包括一些重要的概念解釋,TensorFlow的具體含義和優點,以及TensorFlow的基本工作原理等。1.
  • Keras和TensorFlow究竟哪個會更好?
    2017 年 1 月,隨著 Keras 的作者、谷歌 AI 研究員 Francois Chollet 的一條消息的宣布,Keras 成為第一個被添加到 TensorFlow 核心的高級別框架,Keras 從此成為 Tensorflow 的默認 API。 「那麼,我應該在項目中使用 Keras 還是 TensorFlow?
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    目前,TensorFlow Serving 1.13 已實現對 TF-TRT 的支持,而不久後  TensorFlow 2.0 也將支持 TF-TRT 的實現。 TensorFlow 在官方博客中對這項成果進行了發布,雷鋒網 AI 科技評論編譯如下。
  • TensorFlow都有哪些功能,大家是否都全部了解呢?
    TensorFlow都有哪些功能,大家是否都全部了解呢?那麼現在的 TensorFlow 都有哪些功能,大家是否都全部了解呢?近日,谷歌在 Google Cloud Next 上發布了關於TensorFlow 的所有新內容,AI科技大本營已經為你準備好了~ ▌1.一個強大的機器學習框架 TensorFlow 是一個機器學習的框架,如果你有大量數據需要處理,或是你在和深度學習打交道,那麼 TensorFlow 都將會成為你的得力助手。神經網絡是深度學習的重頭戲。
  • 程式設計師1小時完成深度學習Resnet,谷歌tensorflow多次圖像大賽冠軍
    編譯環境:Python3.6TensorFlow-gpu 1.5.0Pycharm數 據 集:MNIST一、結構分析關於ResNet的來源我就不進行贅述了,相信讀者都對其或多或少有一定的了解,這個包攬各大圖像識別賽事冠軍的模型究竟有什麼與眾不同?
  • 谷歌開源TensorFlow Object Detection API物體識別系統
    在谷歌,研究人員開發了最高水平的計算機視覺機器學習系統,不僅可以用於谷歌自身的產品和服務,還可以推廣至整個研究社區。創造能夠在同一張圖片裡定位和識別多種物體的機器學習模型一直是業內的核心挑戰之一,谷歌宣稱自己已投入大量時間訓練和實驗此類系統。
  • TensorFlow 資源大全中文版
    TensorFlow 是一個採用數據流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU)、伺服器、行動裝置等等。
  • TensorFlow與PyTorch之爭,哪個框架最適合深度學習
    那麼究竟哪種框架最適宜自己手邊的深度學習項目呢?本文作者從這兩種框架各自的功能效果、優缺點以及安裝、版本更新等諸多方面給出了自己的建議。如果你在讀這篇文章,那麼你可能已經開始了自己的深度學習之旅。如果你對這一領域還不是很熟悉,那麼簡單來說,深度學習使用了「人工神經網絡」,這是一種類似大腦的特殊架構,這個領域的發展目標是開發出能解決真實世界問題的類人計算機。
  • 步履不停:TensorFlow 2.4新功能一覽!
    TensorFlow 2.4 正式發布!隨著對分布式訓練和混合精度提供更多支持,加入新的 Numpy 前端及用於監控和診斷性能瓶頸的工具,這個版本的亮點在於推出新功能,以及對性能和擴展方面的增強。
  • 5個簡單的步驟掌握Tensorflow的Tensor
    在這篇文章中,我們將深入研究Tensorflow Tensor的細節。我們將在以下五個簡單步驟中介紹與Tensorflow的Tensor中相關的所有主題:第一步:張量的定義→什麼是張量?我們經常將NumPy與TensorFlow一起使用,因此我們還可以使用以下行導入NumPy:import tensorflow as tfimport numpy as np張量的創建:創建張量對象有幾種方法可以創建tf.Tensor對象。讓我們從幾個例子開始。