tensorflow學習之 Eager execution
學習它主要為了解決yunyang tensorflow-yolov-3GPU多執行緒呼叫的問題
一、開始學習 TensorFlow 最簡單的方法是使用 Eager Execution,官方提供的教程為Colab notebook,打不開需要梯子,參考其他的吧,比如這個:tensorflow之Eager execution基礎
從tensorflow之Eager execution基礎中,我瞭解到:
啥是Eager Execution?
「Eager Execution」,它是一個命令式、由執行定義的介面,一旦從 Python 被呼叫,其操作立即被執行。
這使得入門 TensorFlow 變的更簡單,也使研發更直觀。
Eager Execution 有啥優點?
1、快速除錯即刻的執行錯誤並透過 Python 工具進行整合
2、藉助易於使用的 Python 控制流支援動態模型
3、為自定義和高階梯度提供強大支援
4、適用於幾乎所有可用的 TensorFlow 運算
啥是張量?
張量是一個多維陣列。與NumPy ndarray物件類似,Tensor物件具有資料型別和形狀。
此外,Tensors可以駐留在加速器(如GPU)記憶體中。
TensorFlow提供了豐富的操作庫(tf.add,tf.matmul,tf.linalg.inv等),
它們使用和生成Tensors。這些操作自動轉換本機Python型別。
張量的基本建立與使用
# -*- coding: utf-8 -*-
"""
@File : 191206_test_Eager_execution.py
@Time : 2019/12/6 11:11
@Author : Dontla
@Email : sxana@qq.com
@Software: PyCharm
"""
# 匯入tensorflow
import tensorflow as tf
tf.enable_eager_execution()
# 建立和使用張量
print(tf.add(1,2)) # tf.Tensor(3, shape=(), dtype=int32)
print(tf.add([1, 2], [3, 4])) # tf.Tensor([4 6], shape=(2,), dtype=int32)
print(tf.square(5)) # tf.Tensor(25, shape=(), dtype=int32)
print(tf.reduce_sum([1, 2, 3])) # tf.Tensor(6, shape=(), dtype=int32)
print(tf.encode_base64("hello world")) # tf.Tensor(b'aGVsbG8gd29ybGQ', shape=(), dtype=string)
print(tf.square(2) + tf.square(3)) # tf.Tensor(13, shape=(), dtype=int32)
x = tf.matmul([[1]], [[2, 3]])
print(x) # tf.Tensor([[2 3]], shape=(1, 2), dtype=int32)
print(x.shape) # (1, 2)
print(x.dtype) #
張量的屬性
每個Tensor都有一個形狀和資料型別
x = tf.matmul([[1]], [[2, 3]])
print(x.shape)
print(x.dtype)
NumPy array和TensorFlow張量之間最明顯的區別
張量可以由加速器記憶體(如GPU,TPU)支援。
張量是不可改變的。
TensorFlow張量和NumPy nararrays之間的轉換
TensorFlow操作自動將NumPy ndarrays轉換為Tensors。
NumPy操作自動將Tensors轉換為NumPy ndarrays。
透過在Tensors上呼叫.numpy()方法,可以將張量顯式轉換為NumPy ndarrays。這些轉換通常很容易,因為如果可能,陣列和Tensor共享底層記憶體表示。但是,共享底層表示並不總是可行的,因為Tensor可能託管在GPU記憶體中,而NumPy陣列總是由主機記憶體支援,因此轉換將涉及從GPU到主機記憶體的複製。
import tensorflow as tf
import numpy as np
tf.enable_eager_execution()
ndarray = np.ones([3, 3])
print(ndarray)
# [[1. 1. 1.]
# [1. 1. 1.]
# [1. 1. 1.]] 鄭州人流醫院哪家好
print("TensorFlow operations convert numpy arrays to Tensors automatically")
tensor = tf.multiply(ndarray, 42)
print(tensor)
# tf.Tensor(
# [[42. 42. 42.]
# [42. 42. 42.]
# [42. 42. 42.]], shape=(3, 3), dtype=float64)
print("And NumPy operations convert Tensors to numpy arrays automatically")
print(np.add(tensor, 1))
# [[43. 43. 43.]
# [43. 43. 43.]
# [43. 43. 43.]]
print("The .numpy() method explicitly converts a Tensor to a numpy array")
print(tensor.numpy())
# [[42. 42. 42.]
# [42. 42. 42.]
# [42. 42. 42.]]
二、GPU加速
透過使用GPU進行計算,可以加速許多TensorFlow操作。在沒有任何註釋的情況下,TensorFlow會自動決定是使用GPU還是CPU進行操作(如有必要,還可以複製CPU和GPU記憶體之間的張量)。由操作產生的張量通常由執行操作的裝置的儲存器支援。例如:
# -*- coding: utf-8 -*-
"""
@File : 191208_test_Eager_execution_once_cls.py
@Time : 2019/12/8 12:25
@Author : Dontla
@Email : sxana@qq.com
@Software: PyCharm
"""
import tensorflow as tf
tf.enable_eager_execution()
x = tf.random_uniform([3, 3])
print("Is there a GPU available: ")
print(tf.test.is_gpu_available()) # True
print("Is the Tensor on GPU #0: "),
print(x.device) # /job:localhost/replica:0/task:0/device:GPU:0
print(x.device.endswith('GPU:0')) # True
(1)裝置名稱
Tensor.device屬性提供託管Tensor內容的裝置的完全限定字串名稱。此名稱對一組詳細資訊進行編碼,例如,正在執行此程式的主機的網路地址的識別符號以及該主機中的裝置。這是分散式執行TensorFlow程式所必需的,但我們暫時不會這樣做。如果張量位於主機上的第N個張量上,則字串將以GPU:結尾。
(2)顯示裝置配置
TensorFlow中的術語“placement"指的是如何為執行裝置分配(放置)各個操作。如上所述,當沒有提供明確的指導時,TensorFlow會自動決定執行操作的裝置,並在需要時將Tensors複製到該裝置。但是,可以使用tf.device上下文管理器將TensorFlow操作顯式放置在特定裝置上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2667493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TensorFlow 2.0 的核心功能將是“Eager Execution”
- TensorFlow引入了動態圖機制Eager Execution
- 終於!TensorFlow引入了動態圖機制Eager Execution
- 《深度學習之TensorFlow》pdf深度學習
- 深度學習之Tensorflow框架深度學習框架
- 神經風格遷移:使用 tf.keras 和 Eager Execution,藉助深度學習創作藝術作品Keras深度學習
- TensorFlow 2.0將把Eager Execution變為預設執行模式,你該轉向動態計算圖了模式
- TypeError: Tensor objects are only iterable when eager execution is enabled. To iterate over this tErrorObject
- 深度學習tensorflow 之 distorted_inputs深度學習
- Tensorflow 學習
- 前端如何學習機器學習之TensorFlow.js前端機器學習JS
- python綜合學習七之TensorFlow初識Python
- ML.NET 示例:深度學習之整合TensorFlow深度學習
- tensorflow學習之Anaconda開發環境搭建開發環境
- 深度學習之TensorFlow的介紹與安裝深度學習
- 深度學習中tensorflow框架的學習深度學習框架
- tensorflow語法學習
- TensorFlow學習資源
- TensorFlow 學習筆記筆記
- TF學習——TF之TensorFlow Slim:TensorFlow Slim的簡介、安裝、使用方法之詳細攻略
- TensorFlow學習筆記(二)筆記
- tensorflow學習筆記3筆記
- Tensorflow學習筆記一筆記
- Tensorflow學習筆記二筆記
- TensorFlow學習之會話Sesstion()和互動會話InterativeSesstion()會話
- 深度學習之tensorflow2實戰:多輸出模型深度學習模型
- 使用 Eager Execution 編碼並執行圖表:以通過 RevNet 優化程式碼為例優化
- MSSQL2005-QUERY EXECUTION學習筆記一SQL筆記
- TensorFlow Java API 學習筆記JavaAPI筆記
- TensorFlow學習資源彙總
- Tensorflow 深度學習簡介(自用)深度學習
- TensorFlow學習指南四、分散式分散式
- tensorflow學習筆記——DenseNet筆記SENet
- Tensorflow學習筆記No.10筆記
- Tensorflow學習筆記No.11筆記
- Tensorflow學習筆記No.8筆記
- Tensorflow學習筆記No.7筆記
- TensorFlow學習資料彙總