日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tensorflow教程 学习笔记 之 Eager execution 急切执行

發布時間:2025/3/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tensorflow教程 学习笔记 之 Eager execution 急切执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://tensorflow.juejin.im/get_started/

學習它主要為了解決yunyang tensorflow-yolov-3GPU多線程調用的問題

文章目錄

      • 坑1
        • 啥是Eager Execution?
        • Eager Execution 有啥優點?
        • 啥是張量?
        • 張量的基本創建與使用
        • 張量的屬性
        • NumPy array和TensorFlow張量之間最明顯的區別
        • TensorFlow張量和NumPy nararrays之間的轉換
      • 坑2
        • GPU加速
          • (1)設備名稱
          • (2)顯示設備配置
      • 坑3
        • 數據集
          • (1)創建源數據集
          • (2)應用transformations
          • (3)迭代

坑1

開始學習 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) # <dtype: 'int32'>

張量的屬性

每個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.]]

坑2

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 tftf.enable_eager_execution()x = tf.random_uniform([3, 3])print("Is there a GPU available: ") print(tf.test.is_gpu_available()) # Trueprint("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操作顯式放置在特定設備上。例如:

Wocalei,我在pycharm上跑半天沒跑起來,最后放到ipython上才跑起來的!!!

C:\Users\Dontla>ipython Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] Type 'copyright', 'credits' or 'license' for more information IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.In [1]: import tensorflow as tf...:...:...: def time_matmul(x):...: %timeit tf.matmul(x, x)...:...:...: # Force execution on CPU...: print("On CPU:")...: with tf.device("CPU:0"):...: x = tf.random_uniform([1000, 1000])...: assert x.device.endswith("CPU:0")...: time_matmul(x)...:...: # Force execution on GPU #0 if available...: if tf.test.is_gpu_available():...: with tf.device("GPU:0"): # Or GPU:1 for the 2nd GPU, GPU:2 for the 3rd etc....: x = tf.random_uniform([1000, 1000])...: assert x.device.endswith("GPU:0")...: time_matmul(x)...: On CPU: 608 μs ± 40.2 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each) 2019-12-09 11:33:50.419224: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 2019-12-09 11:33:51.356242: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.6575 pciBusID: 0000:0e:00.0 totalMemory: 11.00GiB freeMemory: 9.10GiB 2019-12-09 11:33:51.533039: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 1 with properties: name: GeForce GT 710 major: 3 minor: 5 memoryClockRate(GHz): 0.954 pciBusID: 0000:05:00.0 totalMemory: 2.00GiB freeMemory: 1.67GiB 2019-12-09 11:33:51.546476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1461] Ignoring visible gpu device (device: 1, name: GeForce GT 710, pci bus id: 0000:05:00.0, compute capability: 3.5) with Cuda compute capability 3.5. The minimum required Cuda capability is 3.7. 2019-12-09 11:33:51.567213: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0 2019-12-09 11:33:53.149081: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-12-09 11:33:53.164773: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0 1 2019-12-09 11:33:53.172301: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N N 2019-12-09 11:33:53.182373: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 1: N N 2019-12-09 11:33:53.187598: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/device:GPU:0 with 8789 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:0e:00.0, compute capability: 6.1) 620 μs ± 48.5 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)In [2]:

不過,在我搞了半天之后,終于能使程序再pycharm上運行了:

# -*- 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 """from timeit import timeit import tensorflow as tfdef func(x):tf.matmul(x, x)def time_matmul(x):print(timeit('func', 'from __main__ import func', number=1))# Force execution on CPU print("On CPU:") with tf.device("CPU:0"):x = tf.random_uniform([1000, 1000])assert x.device.endswith("CPU:0")time_matmul(x)# Force execution on GPU #0 if available if tf.test.is_gpu_available():with tf.device("GPU:0"): # Or GPU:1 for the 2nd GPU, GPU:2 for the 3rd etc.x = tf.random_uniform([1000, 1000])assert x.device.endswith("GPU:0")time_matmul(x)

結果:

D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tensorflow_yolov3/needed/test_tensorflow-gpu/191208_test_Eager_execution_once_cls.py On CPU: 2019-12-10 09:56:02.601521: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 6.209648925078723e-07 2019-12-10 09:56:03.389699: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.6575 pciBusID: 0000:0e:00.0 totalMemory: 11.00GiB freeMemory: 9.10GiB 2019-12-10 09:56:03.537904: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 1 with properties: name: GeForce GT 710 major: 3 minor: 5 memoryClockRate(GHz): 0.954 pciBusID: 0000:05:00.0 totalMemory: 2.00GiB freeMemory: 1.67GiB 2019-12-10 09:56:03.538533: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1461] Ignoring visible gpu device (device: 1, name: GeForce GT 710, pci bus id: 0000:05:00.0, compute capability: 3.5) with Cuda compute capability 3.5. The minimum required Cuda capability is 3.7. 2019-12-10 09:56:03.539099: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0 2019-12-10 09:56:05.750966: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-12-10 09:56:05.751268: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0 1 2019-12-10 09:56:05.751452: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N N 2019-12-10 09:56:05.751652: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 1: N N 2019-12-10 09:56:05.752012: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/device:GPU:0 with 8789 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:0e:00.0, compute capability: 6.1) 9.314473379262722e-07Process finished with exit code 0

以上我是重新定義了一個func()函數了,但并未抓住問題的本質,以下才是:

# -*- 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 """from timeit import timeit import tensorflow as tfdef time_matmul(x):print(timeit('tf.matmul(x, x)', 'from __main__ import tf,x', number=1))# Force execution on CPU print("On CPU:") with tf.device("CPU:0"):x = tf.random_uniform([1000, 1000])assert x.device.endswith("CPU:0")time_matmul(x)# Force execution on GPU #0 if available if tf.test.is_gpu_available():with tf.device("GPU:0"): # Or GPU:1 for the 2nd GPU, GPU:2 for the 3rd etc.x = tf.random_uniform([1000, 1000])assert x.device.endswith("GPU:0")time_matmul(x)

結果:

D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tensorflow_yolov3/needed/test_tensorflow-gpu/191208_test_Eager_execution_once_cls.py On CPU: 2019-12-10 10:45:10.788751: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 0.0006731259434785336 2019-12-10 10:45:11.520722: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.6575 pciBusID: 0000:0e:00.0 totalMemory: 11.00GiB freeMemory: 9.10GiB 2019-12-10 10:45:11.647470: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 1 with properties: name: GeForce GT 710 major: 3 minor: 5 memoryClockRate(GHz): 0.954 pciBusID: 0000:05:00.0 totalMemory: 2.00GiB freeMemory: 1.67GiB 2019-12-10 10:45:11.648053: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1461] Ignoring visible gpu device (device: 1, name: GeForce GT 710, pci bus id: 0000:05:00.0, compute capability: 3.5) with Cuda compute capability 3.5. The minimum required Cuda capability is 3.7. 2019-12-10 10:45:11.648577: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0 2019-12-10 10:45:13.033777: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-12-10 10:45:13.034072: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0 1 2019-12-10 10:45:13.034252: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N N 2019-12-10 10:45:13.034427: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 1: N N 2019-12-10 10:45:13.034762: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/device:GPU:0 with 8789 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:0e:00.0, compute capability: 6.1) 0.0015999160455466566Process finished with exit code 0

坑3

數據集

演示如何使用tf.data.Dataset API構建pipelines以將數據提供給模型。它涵蓋:

  • 創建數據集。
  • 在啟用了eager execution的情況下對數據集進行迭代。
    我們建議使用數據集API從簡單,可重復使用的部分構建高性能,復雜的pipelines,這些部分將為模型的訓練或評估循環提供支持。

如果您熟悉TensorFlow圖,則在啟用eager execution時,構建數據集對象的API保持完全相同,但迭代數據集元素的過程稍微簡單一些。您可以對tf.data.Dataset對象使用Python迭代,而不需要顯式創建tf.data.Iterator對象。因此,在啟用eager執行時,TensorFlow指南中對迭代器的討論無關緊要。

(1)創建源數據集

使用其中一個工廠函數(如Dataset.from_tensors,Dataset.from_tensor_slices)或使用從TextLineDataset或TFRecordDataset等文件讀取的對象創建源數據集。

# -*- 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 tftf.enable_eager_execution()ds_tensors = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6]) # print(type(ds_tensors)) # <class 'tensorflow.python.data.ops.dataset_ops.TensorSliceDataset'> # print(ds_tensors) # TensorSliceDataset shapes: (), types: tf.int32># Create a CSV file import tempfile# tempfile.mkstemp()返回os.open返回的文件描述符和文件名 _, filename = tempfile.mkstemp(dir='./') # print(_) # 3 # print(filename) # D:\20191031_tensorflow_yolov3\needed\test_tensorflow-gpu\tmpjrwgapybwith open(filename, 'w') as f:f.write("""Line 1 Line 2 Line 3""")ds_file = tf.data.TextLineDataset(filename)with open(filename, 'r') as f:print(f.read()) # Line 1 # Line 2 # Line 3
(2)應用transformations

使用map,batch,shuffle等轉換函數將轉換應用于數據集的記錄。(啥意思??)

ds_tensors = ds_tensors.map(tf.square).shuffle(2).batch(2)ds_file = ds_file.batch(2)
(3)迭代

啟用eager執行時,Dataset對象支持迭代。如果您熟悉TensorFlow圖中數據集的使用,請注意不需要調用Dataset.make_one_shot_iterator()或get_next()。

print('Elements of ds_tensors:') for x in ds_tensors:print(x) # Elements of ds_tensors: # tf.Tensor([4 9], shape=(2,), dtype=int32) # tf.Tensor([16 25], shape=(2,), dtype=int32) # tf.Tensor([ 1 36], shape=(2,), dtype=int32)print('\nElements in ds_file:') for x in ds_file:print(x) # Elements in ds_file: # tf.Tensor([b'Line 1 ' b'Line 2'], shape=(2,), dtype=string) # tf.Tensor([b'Line 3'], shape=(1,), dtype=string)

引用文章:tensorflow之Eager execution基礎

總結

以上是生活随笔為你收集整理的tensorflow教程 学习笔记 之 Eager execution 急切执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久一级片| 亚洲人 女学生 打屁股 得到 | 国产大片黄 | 久久影视一区二区 | 天天射天天干天天操 | 久久66热这里只有精品 | 少妇特殊按摩高潮惨叫无码 | 美国色视频 | 丰满少妇在线观看资源站 | 99riav国产精品 | 五月天激情四射 | 污污动态图 | 轻轻草在线视频 | 欧美激情三级 | 干美女少妇 | 欧美色精品 | 一区二区伊人 | 亚洲一区二区成人 | 啪啪综合网 | 椎名空在线观看 | 在线www| 一区免费在线 | 窝窝午夜精品一区二区 | 亚洲福利专区 | 相亲对象是问题学生在线观看 | 在线免费观看网站入口在哪 | 漂亮人妻被黑人久久精品 | 看毛片的网址 | 在线观看av的网站 | 日韩欧美中文字幕在线视频 | 亚色综合| 丝袜视频一区 | 在线看三级 | 69视频免费在线观看 | 黄色成人在线视频 | 狠狠躁夜夜躁av无码中文幕 | 粉嫩小箩莉奶水四溅在线观看 | 国产欧美日韩精品在线 | 超碰丝袜 | 精品国产一区二区三区日日嗨 | 91成人一区二区三区 | 在线视频导航 | 在线观看国产麻豆 | 日本一二三区在线 | 中国一级黄色大片 | 瑟瑟视频免费看 | 蜜桃久久久aaaa成人网一区 | 波多野结衣女同 | 成人在线黄色 | 99精品在线免费观看 | 夜间福利网站 | 日韩免费精品 | 亚洲一区二区在线观看视频 | 性做久久久久久久免费看 | 欧美成人乱码一区二区三区 | 最近中文字幕 | 91精品久久久久久久久久入口 | 国产网站大全 | 午夜国产一级 | 视频一区二区在线观看 | 污动漫网站 | 自慰无码一区二区三区 | 欧美日韩亚洲精品一区二区 | 欧美男女交配视频 | 久久国产精品网站 | 国产精品无码一区二区三区在线看 | 亚洲理论片在线观看 | 黄色动漫软件 | 久久精品一区二区三 | 五月天一区二区 | 黄色免费网站观看 | 国产精品一页 | 色屁屁视频 | 国产在线观看黄 | 疯狂撞击丝袜人妻 | 国产又粗又猛又爽又黄无遮挡 | 制服丝袜快播 | 国产成人精品一区二区三区在线 | 在线 色| aa成人| 欧洲美女毛片 | 日韩午夜免费视频 | 国产草草影院ccyycom | 久久久久久久久成人 | 午夜啪啪网 | 后进极品白嫩翘臀在线视频 | 97精品在线| 青青草久久 | 亚洲图片一区 | 国产在线色视频 | 精品97人妻无码中文永久在线 | 欧美日韩中文字幕一区二区 | 2024国产精品 | 中文字幕 国产精品 | 亚洲精品97久久中文字幕无码 | 国产香蕉尹人视频在线 | 成人国产精品免费 | 一区二区三区成人 | 天天操天天射天天爽 |