使用 theano 进行多处理

2024-05-08

我正在尝试将 theano 与 cpu 多处理和神经网络库 Keras 结合使用。

I use device=gpu标记并加载 keras 模型。然后,为了提取超过一百万张图像的特征,我使用多处理池。

该函数看起来像这样:

from keras import backend as K

f = K.function([model.layers[0].input, K.learning_phase()], [model.layers[-3].output,])

def feature_gen(flz):
    im = imread(flz)
    cPickle.dump(f([im, 0])[0][0], open(flz, 'wb'), -1)

pool = mp.Pool(processes=10)
results = [pool.apply_async(feature_gen, args=(f, )) for f in filelist]]

然而,这开始在 GPU 内存中创建池,并且我的代码因内存错误而失败。是否可以强制多处理在CPU内存中创建线程,然后使用特定部分进行特征提取,例如f([im, 0])[0][0]与GPU?

如果没有,是否有其他方法可以在 python 中并行执行相同的操作?


如果其他进程不使用 keras,则可以使用多个进程,据我所知,您需要将 keras 的使用限制为单个进程。这似乎包括所有 keras 类和方法,甚至那些似乎不使用 gpu 的类和方法,例如图像数据生成器。

如果工作负载受 GPU 限制,还可以使用线程库,它创建线程而不是进程,例如如果在 GPU 处理前一批数据时加载数据,则该限制不适用。由于全局解释器锁,这不是 CPU 有限环境中的解决方案。

您的情况看起来像是并行的[读取,在 GPU 上工作,写入]。这可以改造成管道,例如一些进程读取,主进程执行 GPU 工作,一些进程写入。

  1. 为输入/输出创建队列对象(threading.Queue 或 multiprocessing.Queue)
  2. 创建后台工作线程/进程,从磁盘读取数据并将其提供给输入队列
  3. 创建后台工作线程/进程,将数据从输出队列写入磁盘
  4. 主循环从输入队列获取数据,创建批次,在 GPU 上处理数据并填充输出队列
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 theano 进行多处理 的相关文章

随机推荐

  • 我可以在 git 中使用单个命令推送到多个存储库吗?

    基本上我想做一些类似的事情git push mybranch to repo1 repo2 repo3 现在我只是多次输入push 如果我急于完成push 我只需将它们全部发送到后台git push repo1 git push repo2
  • 在这种情况下设置 EnableEventValidation="false" 是否存在安全风险?

    我有一个包含用户控件的页面 当用户单击图像按钮将其带到另一个显示他们单击的表行项目的详细信息的页面时 会发生错误 System ArgumentException Invalid postback or callback argument
  • Xcode 4 自动完成错误

    您是否还面临 Xcode 4 自动完成功能的问题 该功能过去在 3 x x 版本上运行良好 我已经在 Prefix 中导入了一些类 但 Xcode 不想帮助我输入代码 我必须手动添加上面的 implementation 导入 myclass
  • 在高图表中突出显示一系列条形图中的一个条形图?

    我有一个图表 显示堆叠和分组的条形图 类似于这个演示 http www highcharts com demo column stacked and grouped 有没有办法从 JavaScript 代码中使系列之一中的其中一个栏突出显示
  • 如何使用 Windows 命令行环境查找和替换文件中的文本?

    我正在使用 Windows 命令行环境编写批处理文件脚本 并希望用另一个文件 例如 BAR 更改文件中某些文本 例如 FOO 的每次出现 最简单的方法是什么 有内置函数吗 这里的很多答案都帮助我指明了正确的方向 但是没有一个适合我 所以我发
  • 如何将美国人口普查局的州级形状文件合并为全国性形状

    人口普查局不提供全国范围内公共使用微数据区域的形状文件 美国社区调查中可用的最小地理区域 我尝试用几种不同的方法将它们结合起来 但即使是消除重复标识符的方法一旦到达加利福尼亚州也会崩溃 我是在做一些愚蠢的事情还是需要一个困难的解决方法 下面
  • 各种 Istio 端口是如何使用的?

    Question 我正在尝试学习 Istio 并且正在设置我的 Istio Ingress Gateway 当我设置它时 有以下端口选项 如此处所示 https istio io latest docs reference config i
  • 如何防止机器人程序和垃圾邮件 API 请求?

    我正在使用react native 开发一个Android 应用程序 该应用程序与我正在为该应用程序开发的API 进行通信 该 API 是使用 Laravel 和 Laravel Passport 构建的 我知道 Android 应用程序可
  • 循环遍历服务器上的数据库,并更新数据

    我有一台带有多个数据库的服务器 我需要循环访问这些数据库并更改每个数据库中的一个记录 一个表中的值 如何才能做到这一点 EXEC sp MSForEachDB Use UPDATE dbo MyTable SET MyValue 999
  • 当 querySelectorAll 在不使用库的情况下不可用时,按属性获取元素?

    p 你怎样才能做到相当于 document querySelectorAll data foo where 查询选择器全部 https developer mozilla org en DOM Document querySelectorA
  • 如何让 Rails 资产管道生成源地图?

    我想让 Rails 与编译后的 CoffeeScript 缩小的 JS 一起生成源映射 以便更好地记录错误 不过 网上似乎还没有关于如何执行此操作的全面文档 有人这样做过吗 我使用 Rails 3 2 和 Heroku Rails 支持缩小
  • 链接 llvm 库

    我正在开发一个基于 llvm 的编译器 当我尝试生成可执行文件时 会发生以下错误 bin llvmcode s 35 对 operator new unsigned long 的未定义引用 请注意 在生成的 IR 中 调用了位于 llvm
  • 检查字段是否存在于数组的子文档中

    我有一个与此类似的架构 id Number line items id String quantity Number review request sent Boolean total price String name String or
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • Ttk Treeview:跟踪键盘选择

    这是一个带有 ttk 树视图的 Tk 小部件 当用户单击该行时 会执行某些功能 此处仅打印项目文本 我需要的是以下内容 最初的重点是文本输入 当用户按下 Tab 键时 焦点应该转到第一行 并且应该执行绑定到 Click 事件的函数 当用户使
  • 为什么 StringValidator 对于自定义配置部分总是失败?

    我通过继承在 C 类库中创建了一个自定义配置部分ConfigurationSection 我在 Web 应用程序 也包括 C ASP NET 中引用了类库 填写了适当的属性 一切都运行良好 当我开始添加验证器时 问题就开始了 例如 这个属性
  • 使用 Hibernate 作为 ORM 机制的 Web 应用程序中的 L1 和 L2 缓存有什么区别?

    我只想要一些有关使用 L1 缓存和 L2 缓存的标准用途的一般信息 我很好奇 因为我正在研究使用赤土陶器作为二级缓存的系统 并且我发现它也有一级缓存 L1 缓存是每个 Hibernate 会话都存在的缓存 并且该缓存不在线程之间共享 该缓存
  • NSDateComponents 中的 sethours

    我正在尝试在 NSDateComponents 中设置小时 我编写了以下代码 NSCalendar calendar NSCalendar alloc initWithCalendarIdentifier NSGregorianCalend
  • Word VBA“项目不可见”

    有谁知道如何使模板在 Word 2007 中可见 我创建了一个模板 Experiments dotm 使用加载项添加它 但是当我尝试在其中创建模块时 收到错误消息 项目无法查看 关于 项目无法查看 问题的解释可以参见here http ms
  • 使用 theano 进行多处理

    我正在尝试将 theano 与 cpu 多处理和神经网络库 Keras 结合使用 I use device gpu标记并加载 keras 模型 然后 为了提取超过一百万张图像的特征 我使用多处理池 该函数看起来像这样 from keras