TensorFlow 2.8.0正式上線,修復(fù)眾多Bug,發(fā)布50多個漏洞補丁
近日 TensorFlow 官方發(fā)布了 2.8.0 正式版,距離上次 2.7 版本的更新過去沒多久,新版本提供了更多的 bug 修復(fù)和功能改進,此外新版本還針對漏洞發(fā)布了補丁。
對于 TensorFlow 2.8.0 的上線,網(wǎng)友也紛紛感嘆,這次的 Bug 修復(fù)也太棒了!
不過也有網(wǎng)友已經(jīng)迫不及待的期待 TensorFlow 3.0 的到來,并表示 TensorFlow 1 到 TensorFlow 2 是一個巨大的飛躍,將來 2 到 3 又會有哪些亮眼的表現(xiàn)呢?
眾所周知,TensorFlow 由谷歌開發(fā),最初版本可追溯到 2015 年開源的 TensorFlow0.1,之后發(fā)展穩(wěn)定,擁有強大的用戶群體,成為最受歡迎的深度學(xué)習(xí)框架。但是用戶在使用時,也暴露了 TensorFlow 缺點,例如 API 穩(wěn)定性不足、靜態(tài)計算圖編程復(fù)雜等缺陷。因此在 TensorFlow2.0 版本,谷歌將 Keras 納入進來,成為 tf.keras,到目前為止,TensorFlow 已經(jīng)更新到 2.8 版本,那么新版本有哪些重要的改進呢?
TensorFlow 2.8.0 主要功能和改進
在 tf.lite 中,增加了 TFLite 內(nèi)置 op 支持以下功能:
- tf.raw_ops.Bucketize op 可在 CPU 上操作;
- tf.where op 可用于數(shù)據(jù)類型 tf.int32、tf.uint32、tf.int8、tf.uint8、tf.int64;
- tf.random.normal op 用于在 CPU 上輸出數(shù)據(jù)類型 tf.float32;
- tf.random.uniform op 用于在 CPU 上輸出數(shù)據(jù)類型 tf.float32;
- f.random.categorical op 用于在 CPU 上的輸出數(shù)據(jù)類型 tf.int64。
tensorflow.experimental.tensorrt:
- Conversion_params 在 TrtGraphConverterV2 中被棄用,現(xiàn)在可以支持參數(shù) max_workspace_size_bytes、precision_mode、minimum_segment_size、maximum_cached_engines、use_calibration 和 allow_build_at_runtime;
- 在 TrtGraphConverterV2 中的 .save () 函數(shù)中添加了一個名為 save_gpu_specific_engines 的新參數(shù)。當(dāng)為 False 時,.save () 函數(shù)不會保存任何已構(gòu)建的 TRT 引擎;如果為 True(默認(rèn)),則保留原始行為;
- TrtGraphConverterV2 提供了一個名為 .summary () 的新 API。它顯示了每個 TRTEngineOp 及其輸入和輸出的形狀和 dtype,并提供了詳細版本摘要。
tf.tpu.experimental.embedding:
- tf.tpu.experimental.embedding.FeatureConfig 增加了一個額外的參數(shù) output_shape,它可以指定特征輸出激活的形狀;
- tf.tpu.experimental.embedding.TPUEmbedding 現(xiàn)在具有與 tf.tpu.experimental.embedding.serving_embedding_lookup 相同的功能,它可以使用任意等級密集和稀疏的張量。對于不規(guī)則張量,盡管輸入張量仍然是 2 級,但現(xiàn)在可以通過在特征配置中指定輸出形狀或通過 build 方法來激活 2 級或更高級別。
添加 tf.config.experimental.enable_op_determinism ,這使得 TensorFlow ops 以性能為代價可以確定性地運行。替換 TF_DETERMINISTIC_OPS 環(huán)境變量。
(自 TF 2.7 起)向 TensorFlow Profiler 添加 PluggableDevice 支持。
Bug 修復(fù)和其他改進
tf.data:
- 如果用戶未禁用,現(xiàn)在優(yōu)化 parallel_batch 現(xiàn)在成為默認(rèn)值,這樣可以并行復(fù)制批處理元素;
- 添加了 TensorSliceDataset,用于識別和處理文件輸入。
tf.lite:
- 為 Java API 的序列化添加 GPU 委托支持,當(dāng) OpenCL 可用時,這將初始化時間提高了 90%;
- 棄用 Interpreter::SetNumThreads,支持 InterpreterBuilder::SetNumThreads。
tf.keras
- tf.random.Generator 用于 keras 初始化和所有的 RNG 代碼;
- TextVectorization 增加了額外的 standardize 和 split 模式:standardize="lower" 轉(zhuǎn)化為小寫字母輸入;standardize="string_punctuation" 刪除所有標(biāo)點符號;Split ="character" 將對每個 unicode 字符進行拆分。
增加 GPU 實現(xiàn):
- (自 2.7 版本開始) tf.math.segment_mean
- (自 2.7 版本開始) tf.math.segment_prod
- (自 2.7 版本開始) tf.math.segment_sum
TensorFlow 已在適用于 GPU 和 CPU 的 Windows Subsystem for Linux 2(又名 WSL 2)上得到驗證。
此外,TensorFlow 2.8.0 在安全方面進行了一些修正,包括修正了執(zhí)行卷積運算時浮點數(shù)被 0 除的問題:CVE-2022-21725;修正了 Dequantize 形狀推斷中的整數(shù)溢出問題:CVE-2022-21727;修正了 ConcatV2 形狀推斷中的類型混淆問題:CVE-2022-21731 等。
更多內(nèi)容,請參考:https://github.com/tensorflow/tensorflow/releases/tag/v2.8.0?linkId=8031153