循环 tf.data.Dataset 非常慢

2023-12-06

我想知道为什么对 tf.data.Dataset 样本进行 for 循环比对相应的 numpy 数组进行循环要慢得多。

import numpy as np
import tensorflow as tf
import time

a = np.ones(100000, dtype=np.float32)

start_time = time.time()
for x in a:
    pass
print(time.time() - start_time)

start_time = time.time()
for x in tf.data.Dataset.from_tensor_slices(a):
    pass
print(time.time() - start_time)

0.05548405647277832
5.67711615562439

我的TensorFlow版本是2.0.0。


是的,即使我也观察到了同样的行为。要提高速度/性能,请尝试包装tf.data.dataset in a @tf.函数几乎需要同样的时间。

签名默认为tf.function并将您的 Python eager 代码转换为与图兼容的 TensorFlow 操作。这包括控制流,例如if, for, while.

tf.function最适合 TensorFlow 操作,NumPy 和 Python 调用会转换为常量。

请参考下面显示的代码来换行@tf.function

@tf.function

def oper(a):
    start_time = time.time()
    for x in tf.data.Dataset.from_tensor_slices(a):
        pass
    print(time.time() - start_time)

完整的工作代码如下所示numpy and tf.data.dataset表现

import numpy as np
import tensorflow as tf
import time

a = np.ones(100000, dtype=np.float32)

start_time = time.time()
for x in a:
    pass
print(time.time() - start_time)


@tf.function

def oper(a):
    start_time = time.time()

    for x in tf.data.Dataset.from_tensor_slices(a):
        pass
    print(time.time() - start_time)

oper(a) 

output:

0.012496232986450195
0.017792224884033203

想了解更多tf.function请参考this.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环 tf.data.Dataset 非常慢 的相关文章

  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • Pip install 导致此错误“ cl.exe' failed with exit code 2 ”

    我已经阅读了有关此错误的所有其他问题 但令人沮丧的是 没有一个给出有效的解决方案 如果我跑pip install sentencepiece在命令行中 它给出了以下输出 src sentencepiece sentencepiece wra
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • Python 小数.InvalidOperation 错误

    当我运行这样的东西时 我总是收到此错误 from decimal import getcontext prec 30 b 2 3 Decimal b Error Traceback most recent call last File Te
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 绘制“plot”而不是“scatter”时,图例选择会中断

    再会 这个问题是后续问题为什么图例选取仅适用于 ax twinx 而不适用于 ax https stackoverflow com q 60167378 9282844 下面提供的最小代码分别绘制了两条曲线ax1 and ax2 ax1 t
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • Selenium Webdriver - Python - leboncoin - pb 选择带重音的按钮

    我正在尝试在以下网站上自动填写表格 https www leboncoin fr https www leboncoin fr 我用 Selenium IDE 录制了一个脚本 我有一个通过单击 Se 连接器 按钮并填写我的密码和用户名来自动
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • 在函数调用之间保存数据的Pythonic方式是什么?

    对我来说 上下文是我需要在调用修改该值的函数之间保留的单个 int 的信息 我可以使用全局 但我知道这是不鼓励的 现在 我使用了包含 int 的列表形式的默认参数 并利用了可变性 以便在调用之间保留对值的更改 如下所示 def increm
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • 向量化 numpy bincount

    我有一个 2d numpy 数组 A我要申请np bincount 到矩阵的每一列A生成另一个二维数组B由原始矩阵每列的 bincounts 组成A 我的问题是 np bincount 是一个采用一维数组的函数 它不是像这样的数组方法B A
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • psutil:测量特定进程的CPU使用率

    我正在尝试测量进程树的 cpu 使用率 目前获取进程 没有子进程 的 cpu usage 就可以了 但我得到了奇怪的结果 import psutil p psutil Process PID p cpu percent 还给我float g
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp

随机推荐

  • 在 Kivy 画布上显示 PIL 图像

    我找不到任何有关如何在 Kivy Canvas 上显示 PIL 图像的文档 Rectangle source image give TypeError Image object has no attribute getitem 由于其他图像
  • 在Windows应用程序中调用Web服务

    我有一个 Windows 应用程序 我要求用户通过网站中提供给用户的用户名和密码登录应用程序 为此 我首先检查用户是否连接到互联网 如果存在连接 则继续检查凭据是否有效 因此 我需要在Windows应用程序中调用Web服务 我该如何进行 欢
  • 使用 firebase.com 作为数据库的应用程序中的分页

    前端应用程序将使用 firebase com 作为数据库 应用程序应该像博客一样工作 管理员添加 删除帖子 有 主页 页面 每页显示多篇文章 带有 下一页 和 上一页 按钮 以及显示单篇文章的页面 我还需要深层链接 IE 当用户输入 URL
  • Backbone.Collection.Create 未在视图中触发“添加”

    希望这是一个简单的问题 我正在努力学习骨干 但我坚持做一件非常简单的事情 当我使用 create 方法更新集合时 视图上的渲染永远不会被调用 我认为这应该在不显式调用 render 的情况下发生 我没有加载任何动态的东西 在这个脚本触发之前
  • 在android中启动2个模拟器

    我想知道是否有任何简单的方法可以在 android 中启动 2 个模拟器 我已经查看了开发人员指南 但没有足够的信息来帮助我 请有人解释一下这是如何完成的 谢谢 据我所知 您不能两次启动同一个模拟器 但通过创建两个单独的模拟器 您可以同时启
  • 休息最佳实践:何时返回 404 not found

    如果我有以下休息电话 GET items id subitems 在这些情况下我们应该返回以下内容吗 If id 没有找到 我们应该返回吗404 Not Found If id 已找到但未找到子项 我们是否应该返回200 Ok和一个空数组
  • 更新约会时时区更改为 UTC

    我正在使用 EWS 1 2 发送预约 创建新约会时 时区在通知邮件上正确显示 但在更新同一约会时 时区会重置为 UTC 有人能帮我解决这个问题吗 以下是复制该问题的示例代码 ExchangeService service new Excha
  • 使用mysql、php和ajax(使用jquery)创建表

    对于我的新项目 我想要一种不需要在每个数据库请求上重新加载页面的现代方法 我希望脚本查询数据库并使用查询信息创建一个表 我尝试了在互联网上找到的不同脚本 下面这个最接近我的需求 索引 php
  • 重定向回来时 LightOpenID 被禁止

    我正在尝试使用 lightOpenID 它应该很简单 并且上传文件然后测试它是否有效 当我使用 example google php 时 我第一次点击登录按钮 它要求我登录 Google 并允许 记住我正在构建的网站 然后它重定向回 exa
  • 在C语言中,数组是指针还是用作指针?

    我的理解是 数组只是指向值序列的常量指针 当您在 C 中声明数组时 您就是在声明一个指针并为其指向的序列分配空间 但这让我很困惑 以下代码 char y 20 char z y printf y size is lu n sizeof y
  • 需要将ascii值转换为hex值

    我需要将 ascii 值转换为十六进制值 请参阅 Ascii 表 但我在下面列出了一些示例 ASCII 1 31 2 32 3 33 4 34 5 35 A 41 a 61 等 但我使用 int 而不是字符串值 是否可以这样做 因此int测
  • Jekyll 多页分页

    我是 html css 新手 但正在尝试使用 Jekyll 创建一个博客 我在这里找到了这个主题https github com rosario kasper 主页index html 包含分页列表中的所有帖子 这很酷 不过 我想将我的帖子
  • Grails 条件查询检查“OR”逻辑

    我有圣杯criteriaQuery我正在检查的地方OR针对单个状态变量的逻辑如下 or eq status Status ONE eq status Status TWO eq status Status THREE 这段代码工作正常 我的
  • 从 firestore flutter 中的子集合中获取数据

    在第一个屏幕截图中 收集了许多文档users 每个文档都包含进一步的集合jobPost该集合包含更多文档及其元数据 我在这里想要的是转到集合的每个文档users和进一步的子集合jobPost并获取所有文档 假设首先应该转到集合中的文档 1u
  • 将 jQuery 日期选择器应用于多个实例

    我有一个 jQuery 日期选择器控件 可以在一次实例中正常工作 但我不确定如何让它在多个实例中工作 br 如果没有 For Each 循环 它可以正常工作 但如果 MyRecords 集合中有多个项目 则只有第一个文本框获得日期选择器 这
  • Lumen - mongodb - jenssegers/laravel-mongodb - 邮递员

    我已经在我的wamp上安装了mongodb C wamp64 bin mongodb mongodb 3 4 bin 我在路径中添加了 mongodb 并创建 Windows 服务以在必要时启动它 我已经通过 Composer 安装了 lu
  • C++ 中的多维数组如何发挥作用? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中使用数组 简而言之 C 中的多维数组是数组的数组 还是只是一个表现得像多维的数组 我的一位朋友解释说 C 中的数组只是常量指针 多维数组也是常量指针 其元素由多个索引寻址 即它们是指向一
  • 如何在 SQL 中选择重叠的日期范围

    我有一个包含以下列的表 sID 开始日期和结束日期 一些值如下 1 1995 07 28 2003 07 20 1 2003 07 21 2010 05 04 1 2010 05 03 2010 05 03 2 1960 01 01 201
  • java中的“>>>”是什么意思?

    我试图将此代码翻译为Python 但我很难这样做 不要担心索引值和变量名称 我只是想知道 gt gt gt 部分到底做了什么 也许是Python的等效项 但有一个解释就很好了 target 0 char source sourceIndex
  • 循环 tf.data.Dataset 非常慢

    我想知道为什么对 tf data Dataset 样本进行 for 循环比对相应的 numpy 数组进行循环要慢得多 import numpy as np import tensorflow as tf import time a np o