在多个线程中重用 Tensorflow 会话会导致崩溃

2024-04-05

背景:

我有一些复杂的强化学习算法,我想在多个线程中运行。

Problem

当尝试打电话时sess.run在一个线程中我收到以下错误消息:

RuntimeError: The Session graph is empty. Add operations to the graph before calling run().

重现错误的代码:

import tensorflow as tf

import threading

def thread_function(sess, i):
    inn = [1.3, 4.5]
    A = tf.placeholder(dtype=float, shape=(None), name="input")
    P = tf.Print(A, [A])
    Q = tf.add(A, P)
    sess.run(Q, feed_dict={A: inn})

def main(sess):

    thread_list = []
    for i in range(0, 4):
        t = threading.Thread(target=thread_function, args=(sess, i))
        thread_list.append(t)
        t.start()

    for t in thread_list:
        t.join()

if __name__ == '__main__':

    sess = tf.Session()
    main(sess)

如果我在线程外运行相同的代码,它将正常工作。

有人可以深入了解如何在 python 线程中正确使用 Tensorflow 会话吗?


Session不仅可以是当前线程的默认值,还可以是图。 当您进入会话并调用时run在其上,默认图表将是不同的。

您可以修改您的线程函数像这样让它工作:

def thread_function(sess, i):
    with sess.graph.as_default():
        inn = [1.3, 4.5]
        A = tf.placeholder(dtype=float, shape=(None), name="input")
        P = tf.Print(A, [A])
        Q = tf.add(A, P)
        sess.run(Q, feed_dict={A: inn})

但是,我不希望有任何显着的加速。 Python 线程与其他语言中的含义不同,只有某些操作(例如 io)会并行运行。对于 CPU 密集型操作来说,它不是很有用。多处理可以真正并行运行代码,但您不会共享同一个会话。

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

在多个线程中重用 Tensorflow 会话会导致崩溃 的相关文章

  • 我应该使用 Pylons 还是 Pyramid?

    我本来打算从 Django 迁移到 Pylons 但后来我遇到了 Pyramid 塔架和金字塔有什么区别 我读了一些文字塔书 http pylonsbook com 目前涵盖 Pylons 0 9 7 并且想知道它是否是 Pylons 和
  • 字符串中数字的连续相加

    我是一名正在学习 python 的新程序员 并且在如何完成此任务方面遇到了困难 所以本质上我有一个从文件导入的数字字符串需要读取 并且需要将第一个数字的总和添加到第二个数字并将其转换为正确的 ascii 字符 因此 例如 如果我正在读取字符
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • python解释器自动重启而不返回答案

    调用递归函数时 python解释器会自动重新启动吗 我正在编写一个快速排序算法 并尝试对一个大的数字数组 顺序 10 4 进行排序 但是当我尝试对整个数组进行排序时 python 正在重新启动 即给我 重新启动 并且存储在内存中的所有值 函
  • xlwt 可以在单元格中创建一个包含标题和链接变量的超链接吗?

    例如 如何更改以下行 使 test 为变量 T 且 http google com http google com 是变量L ws write 0 0 xlwt Formula test HYPERLINK http google com
  • Python Twisted 与 Cmd 模块集成

    我喜欢Python的Twisted http twistedmatrix com and Cmd http docs python org library cmd html 我想一起使用它们 我已经完成了一些工作 但到目前为止我还没有弄清楚
  • 增加 sigmoid 预测输出值?

    我创建了一个用于文本分类的 Conv1D 模型 当在最后一个密集处使用 softmax sigmoid 时 它产生的结果为 softmax gt 0 98502016 0 0149798 sigmoid gt 0 03902826 0 00
  • 查找张量流运算所依赖的所有变量

    有没有办法找到给定操作 通常是损失 所依赖的所有变量 我想用它来将该集合传递到optimizer minimize or tf gradients 使用各种set intersection 组合 到目前为止我已经找到了op op input
  • 字段“id”期望一个数字,但得到“natsu”django

    我想创建一个 user posts 视图 其中包含与特定用户相关的所有帖子 假设有用户 Natsu 撰写的博客帖子 那么登录用户 Testuser 将能够查看所有帖子由该用户发布 即用户 Natsu 的所有帖子 blog models py
  • 初始化整数变量以进行比较

    我正在学习麻省理工学院的开放课件课程计算机科学和 Python 编程简介 https ocw mit edu courses electrical engineering and computer science 6 0001 introd
  • 谷歌colab录音,如何实现更精确的方式告诉用户开始对着麦克风说话

    我正在尝试创建一个为机器学习项目录制音频的程序 我想使用 google colab 这样人们就不必在他们的系统上安装或运行任何东西 我在网上找到了这个录制和播放音频的示例 单元格 1 包含用于录制音频的 js 代码和用于将其转换为字节对象的
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • Python列表错误还是我错了?

    我构建了一个 3 级嵌套列表 run on Python 3 2 3 32 bit on Win 7 L2 list 0 for i in range 2 L3 list L2 for i in range 3 L4 list L3 for
  • setUp() 中的 if 条件忽略测试

    在unittest python库中 存在函数setUp and tearDown用于设置变量和其他测试前后的事情 如何运行或忽略 setUp 中条件的测试 您可以致电if cond self skipTest reason in setU
  • numpy 相关系数错误 - RuntimeWarning:true_divide 中遇到无效值

    当我尝试查找数据系列之间的相关性时 出现以下错误 gt gt gt i 1 1 1 gt gt gt j 2 2 2 gt gt gt import numpy as np gt gt gt np corrcoef i j usr loca
  • 获取SVG绘图的边界框

    我想提取 SVG 绘图的边界框 由于 Python 已经在系统上可用并且还用于执行其他任务 因此我不想使用 JavaScript 或任何其他语言 我的理解是是否可以计算单个元素的边界框 但我不知道如何计算 整个绘图的边界框只是所有元素的最小
  • 如何重写一个列表列表,使值的“孤岛”彼此唯一?

    假设我有一个列表列表 或更概念上准确的二维数组 list 1 1 0 0 0 1 1 2 0 0 0 2 2 2 0 0 0 0 2 0 0 0 0 1 0 我想识别具有相同值的不同区域并重写列表 以便每个区域都有唯一的值 如下所示 lis
  • df.style.apply 在显示中居中显示多索引值

    当我跑步时 import pandas as pd from IPython display import display df pd DataFrame a index pd MultiIndex from product 0 1 3 c
  • 具有默认参数的Python类构造函数[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中的 最不令人惊讶 可变默认参数 https stackoverflow com questions 1132941 least astonishment in python the m
  • pyodbc 无法正确处理 unicode 数据

    我确实使用 pyodbc 成功连接了 MySQL 数据库 并且它可以很好地处理 ascii 编码的数据 但是当我打印使用 unicode utf8 编码的数据时 它引发了错误 UnicodeEncodeError ascii codec c

随机推荐

  • 如何在 Octave 中永久加载包?

    我在 Windows vista 上使用 Octave 我在代码中使用 4 个包 但是每次我重新启动八度音程时 我都必须从命令行手动加载 pkg load 有没有办法永久加载它们 以便每当 Octave 启动时它都会在其路径中找到它们 当
  • 如何在 mongo 中不区分大小写地索引用户名?

    我正在编写一个网络服务 用户可以选择一个不区分大小写的唯一用户名 不过 我想允许他们使用区分大小写的用户名版本 在插入时检查用户名没有不区分大小写的重复项的最佳方法是什么 我目前看到有两种方法可以做到这一点 存储小写版本和用户输入大小写的另
  • 使用 Google Maps API 配置热图叠加层

    我正在尝试使用 Google Maps API 生成位置热图 它可以工作 但结果不是很有用 因为热图渲染的部分很小很难看到 文档中没有任何内容建议扩展热图以呈现更大的斑点的方法 是否有一种未记录的方法可以做到这一点 或者这只是 API 的限
  • 解码 OAEP 填充时出错

    使用解密文本时RSACryptoServiceProvider Decrypt 我收到错误 解码 OAEP 填充时出错 这是我的代码 CspParameters cspParam new CspParameters cspParam new
  • 如何在不按 F5 的情况下使缓存图像过期?

    我正在使用 MVC4 和 C 制作一个 Web 应用程序 我允许用户上传他们的个人资料图片 此时 我需要之前的个人资料图片过期 以便当浏览器重新加载页面时显示新图像 目前 由于两个图像共享相同的名称 因此浏览器使用已缓存的先前图像而不是新图
  • 单击 iframe 中的链接根本没有任何效果

    在 Google Chrome 中 我注意到点击一些链接似乎根本没有效果 a href http google com clicking this link does nothing at all a 这里有一个JSBin http jsb
  • 避免在重建期间删除当前的 Lucene.NET 索引

    我是 Lucene NET 的新手 但我正在使用一个开源工具 http trac sitecore net AdvancedDatabaseCrawler 为Sitecore CMS http www sitecore net它使用 Luc
  • Robot Framework:在实际变量中包含竖线(|)字符而不是作为分隔符的方法?

    我通过文本格式使用 Robot Framework 和 robot 文件设置 我一直在寻找一种包含管道字符的方法 变量中每一侧都有一个空格 以便变量中的内容可读 而不会导致 Robot Framework 将其视为分隔符 问题在于 Robo
  • 如何从另一个 Grails 插件配置 Grails 插件

    我正在尝试编写一个可以在多个 Grails 应用程序中重用的插件 该插件基本上应该是一个包装器弹簧安全核心 http grails org plugin spring security core和 LDAP 插件 这意味着它应该包含 用户
  • 运行时的“v2.0.50727”,如果没有附加配置信息,则无法在 4.0 运行时中加载[重复]

    这个问题在这里已经有答案了 我正在将 vcproj 从 VS2005 转换为 VS2010 但转换后出现以下错误 附加信息 混合模式程序集是针对运行时版本 v2 0 50727 构建的 如果没有附加配置信息 则无法在 4 0 运行时中加载
  • 耳朵图像处理 - 在 MATLAB 中查找直线和曲线的交点

    1 https i stack imgur com j3ZRQ jpg我有一只耳朵的 Canny 边缘输出 我用一条线 绿色 连接了最远的两个边界 现在我想从这条线的中点到外边界 左侧 绘制一条法线 我编写的代码帮助我绘制法线 但我希望红线
  • mysql NOW() 返回错误值,而全局时区设置为 +00:00

    两周以来 我对时区问题感到困惑 在我的本地主机上一切正常 但它在专用服务器上返回错误的值 让我说说到目前为止我做了什么 首先通过以下查询设置全局时区 本地主机和服务器上的超级权限 SET GLOBAL time zone 00 00 现在运
  • 如何访问权限允许管理android studio中的所有文件

    在 Android 10 和 11 SDK 30 中 如何访问Android设备中的所有文件并授予允许管理所有文件的权限 我已经尝试过requestLegacyExternalStorage defaultToDeviceProtected
  • 将 java 对象/类从一个类加载器复制到另一个类加载器

    您好 有没有一种方法可以将一个类加载上下文 属性等 从一个类加载器 例如 制作 类点 复制到另一个类加载器 明确表示 例子 我在 CL 1 上有一个对象点 现在在另一个 CL2 上运行 我想在 CL 3 中创建这个对象 一些对象 class
  • 设置 dplyr 链内列的格式

    我有这个数据集 dat lt structure list date structure c 1L 1L 1L 2L 2L 2L 3L 3L 3L 4L 4L Label c 3 31 2014 4 1 2014 4 2 2014 4 3
  • 如何让Android KitKat用户不下载应用程序?

    我在Android 中开发了一个应用程序 它适用于除 KitKat 用户之外的所有用户 当我在 Play 商店上传此应用程序时 我希望 KitKat 用户无法下载此应用程序 即使当我在系统中执行此应用程序时 它也会检测 KitKat 手机
  • 在java中创建自定义对象数组

    我有 100 条数据记录 这些数据是从服务传入我的系统的 我想为每条记录创建 100 个类对象 以便将其序列化为我的自定义类 我在 for 循环内进行内存创建 如下所示 for int i 0 i lt 100 i SomeClass s1
  • 将 HTML 文件解析为 PHP

    这是将 html 文件解析为 php 的正确方法吗 RemoveHandler html htm AddType application x httpd php php htm html 保存在根文件夹中的 htaccess 文件中吗 我添
  • NSApplication windows 属性 - windows 未删除?

    我有一个显示模式的 NSWindow Controller 它有一个 关闭 按钮 连接到如下操作 IBAction close id sender self window orderOut sender self window close
  • 在多个线程中重用 Tensorflow 会话会导致崩溃

    背景 我有一些复杂的强化学习算法 我想在多个线程中运行 Problem 当尝试打电话时sess run在一个线程中我收到以下错误消息 RuntimeError The Session graph is empty Add operation