为什么设置初始化值会阻止在 TensorFlow 中将变量放置在 GPU 上?

2024-01-05

当我尝试运行以下非常简单的 TensorFlow 代码时出现异常,尽管我实际上是从文档中复制了它:

import tensorflow as tf

with tf.device("/gpu:0"):
  x = tf.Variable(0, name="x")

sess = tf.Session()
sess.run(x.initializer) # Bombs!

例外情况是:

tensorflow.python.framework.errors.InvalidArgumentError: Cannot assign a device to
node 'x': Could not satisfy explicit device specification '/device:GPU:0' because
no supported kernel for GPU devices is available.

如果我将变量的初始值更改为tf.zeros([1])相反,一切正常:

import tensorflow as tf

with tf.device("/gpu:0"):
  x = tf.Variable(tf.zeros([1]), name="x")

sess = tf.Session()     
sess.run(x.initializer)  # Works fine

知道发生了什么事吗?


出现这个错误是因为tf.Variable(0, ...)定义元素类型的变量tf.int32,并且没有内核实现int32标准 TensorFlow 分布中 GPU 上的变量。当你使用tf.Variable(tf.zeros([1])),您正在定义一个元素类型的变量tf.float32, which isGPU 上支持。

的故事tf.int32关于 TensorFlow 中的 GPU 的内容是一篇很长的文章。虽然支持在 GPU 上运行的整数运算在技术上很容易,但我们的经验是大多数整数运算实际上发生在 GPU 上metadata张量的元数据存在于 CPU 上,因此在 CPU 上对其进行操作会更高效。作为短期解决方法,需要进行多个内核注册int32GPU 上的内容已被删除。但是,如果这些对您的模型有用,则可以将它们添加为自定义操作 https://www.tensorflow.org/versions/r0.10/how_tos/adding_an_op/index.html.


Source:在 TensorFlow 0.10 中,与变量相关的内核是挂号的 https://github.com/tensorflow/tensorflow/blob/854146110b5ec6b087fc6f2e18f35cc3b98e7186/tensorflow/core/kernels/variable_ops.cc#L55使用TF_CALL_GPU_NUMBER_TYPES() https://github.com/tensorflow/tensorflow/blob/854146110b5ec6b087fc6f2e18f35cc3b98e7186/tensorflow/core/framework/register_types.h#L162宏。当前的“GPU 编号类型”是tf.float16, tf.float32, and tf.float64.

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

为什么设置初始化值会阻止在 TensorFlow 中将变量放置在 GPU 上? 的相关文章

随机推荐

  • UIView 对象的唯一标识符

    我遇到以下问题 当 UIVIew 上发生某种触摸时 我想存储这个 UIView唯一标识符 比如 objectID 这样当我再次重新打开我的应用程序时 我可以检查可见的 UIView 中是否存在具有存储中唯一 ID 的 UIView 我不想将
  • 使用 PlayFramework 多重上传文件

    我尝试使用 Play Framework 一次上传多个文件 但我总是获得每个上传的第一个图像 这是一个具体案例 HTML
  • 动态壁纸和扩展背景

    我正在尝试创建一个动态壁纸 其动画始终位于当前主屏幕页面的中心 而不会丢失扩展背景 我现在正在做的是绘制自定义背景位图 然后在其上绘制一些文本 这是我的并条方法 final SurfaceHolder holder getSurfaceHo
  • merge --squash 和 rebase 有什么区别?

    我试图理解壁球和变基之间的区别 据我了解 在进行变基时会执行挤压 Merge commits retains all of the commits in your branch and interleaves them with commi
  • 从标准输入读取

    使用读取用户输入的可能方法有哪些read Unix 中的系统调用 我们如何使用从 stdin 逐字节读取read 你可以这样做来读取 10 个字节 char buffer 10 read STDIN FILENO buffer 10 记住r
  • 如何让导航栏透明

    如何在 Android 4 4 X 及更高版本上使导航栏透明 我在文档中进行了搜索 但没有找到任何相关内容 我已从更改日志中获取了此内容安卓奇巧 4 4 http developer android com about versions a
  • 安装 django-admin-charts 后出现关于 smart_text 的错误

    我想在管理面板中显示图表 我安装了django admin charts包裹 其中说将这些添加到settings py INSTALLED APPS admin tools stats this must be BEFORE admin t
  • git merge 导致不合理的冲突

    我基本上在从 current iteration 合并到我的分支的几乎所有文件上都遇到了冲突 这真是令人抓狂 让许多人惊讶不已 摸不着头脑 我目前正在使用 git 版本的 mac 工作2 18 0 我的同行都在Windows git版本上工
  • 在docker中运行jupyter笔记本时如何处理python模块安装?

    我目前开始使用很棒的 jupyter 笔记本 由于我总是遇到由于不同的 python 版本和 python 模块版本而无法工作的问题 因此我喜欢在 docker 容器中运行 jupyter Notebook 我创建了一个Dockerfile
  • Azure Web APP 中的 DOS 保护

    我们正在为我们的前端站点使用 Azure Web APP 最近我们的网站发现了DOS攻击 当我用谷歌搜索时 我了解了 Azure 云服务的解决方案 有什么办法可以通过开箱即用的支持来保护 Azure Web APP Azure 网站启用了
  • vue test utils TypeError:无法解构“未定义”或“空”的属性“配置”

    我只是使用 vue test utils 进行简单的单元测试 但它不起作用 我不知道 帮我 我安装了这个东西 gt npm i D jest vue test utils vue jest jest serializer vue babel
  • 如何将所有文本从控制台获取到字符串?

    我是这样测试的 NUnit ConsoleRunner Runner Main new string System Reflection Assembly GetExecutingAssembly Location OpenShop Fir
  • 将原始数据类型转换为 void 指针类型

    我正在阅读有关 pthreads 的内容here https computing llnl gov tutorials pthreads 在一个例子中 他们给出了this https computing llnl gov tutorials
  • Android 的 React Native Expo EAS 构建失败,路径 =“” 错误

    我正在 EAS 的帮助下构建 Android 预览版 但失败并出现以下错误 我对 iOS 没有任何问题 因为它可以工作 android中的主要错误如下 stderr Settings file home expo workingdir bu
  • 我可以自动按下带有 URL 的网页上的按钮吗?

    我希望能够自动单击网页上的此表单按钮
  • 检查原始字段的类型

    我正在尝试确定对象上字段的类型 我不知道传递给我的对象的类型 但我需要找到以下字段longs 盒装的很容易区分Long但原始的long似乎更难 I can确保传递给我的对象只有Longs 不是原始类型 但我不想 所以我所拥有的是 for F
  • 在 Crystal Report 中存储当前行的前一行值

    我想检索当前行中的前一行值 如下所示 Crystal Report 2008 Date PreviousBalance Loan Collection CurrentBalance 14 02 2012 00 00 10000 00 00
  • 如何在 Symfony Response 中包含 Web 调试工具栏?

    当我渲染模板并从控制器返回响应时 页面底部有一个漂亮的 Web 调试工具栏 当我不使用模板并通过自己创建 Response 对象返回响应时 是否可以使此栏出现 应该足以确保有一个有效的 响应 HTML 代码中包含的块 如果主体部分丢失 则不
  • 如何从一个 SELECT 语句插入多个表

    我正在尝试从一个 select 语句插入多个表 是否可以 这就是我在这里尝试做的事情 insert into table1 Name Address insert into table2 Name Address select Name A
  • 为什么设置初始化值会阻止在 TensorFlow 中将变量放置在 GPU 上?

    当我尝试运行以下非常简单的 TensorFlow 代码时出现异常 尽管我实际上是从文档中复制了它 import tensorflow as tf with tf device gpu 0 x tf Variable 0 name x ses