我正在使用带有Tensorflow的Keras作为后端.
我试图在我的主进程中保存模型,然后model.predict在另一个进程中加载/运行(即调用).
我目前只是尝试从文档中保存/加载模型的天真方法:https://keras.io/getting-started/faq/#how-can-i-save-a-keras-model.
所以基本上:
model.save() 在主要过程中model = load_model() 在儿童过程中model.predict() 在儿童过程中但是,它只是挂在load_model电话上.
搜索周围我发现了这个可能相关的答案,表明Keras只能在一个过程中使用:与theano一起使用多处理但不确定这是否属实(似乎在这方面似乎找不到太多).
有没有办法实现我的目标?非常感谢高级别描述或简短示例.
注意:我尝试了将图形传递给流程的方法但是失败了,因为似乎张流图不可选(这里有相关的SO帖子:Tensorflow:将会话传递给python多进程).如果确实有一种方法可以将张量流图/模型传递给子进程,那么我也对此持开放态度.
谢谢!
python neural-network python-multiprocessing keras tensorflow
我正在使用带有张量流的Keras作为后端.我有一个编译/训练的模型.
我的预测循环很慢,所以我想找到一种方法来并行化predict_proba调用以加快速度.我想获取批次(数据)列表,然后是每个可用的gpu,运行model.predict_proba()这些批次的子集.
实质上:
data = [ batch_0, batch_1, ... , batch_N ]
on gpu_0 => return predict_proba(batch_0)
on gpu_1 => return predict_proba(batch_1)
...
on gpu_N => return predict_proba(batch_N)
Run Code Online (Sandbox Code Playgroud)
我知道纯Tensorflow可以将ops分配给给定的gpu(https://www.tensorflow.org/tutorials/using_gpu).但是,我不知道这是如何转化为我的情况,因为我使用Keras的api构建/编译/训练了我的模型.
我曾经想过,也许我只需要使用python的多处理模块并开始运行每个gpu的进程predict_proba(batch_n).我知道这在理论上是可能的,因为我的另一个SO帖子:Keras + Tensorflow和Python中的多处理.然而,这仍然让我不知道如何实际"选择"一个gpu来操作这个过程.
我的问题归结为:当使用Tensorflow作为Keras的后端时,如何将Keras中的一个模型的预测与多个gpus并行化?
另外,我很好奇是否只有一个gpu可以进行类似的预测并行化.
高级描述或代码示例将不胜感激!
谢谢!
将numpy.float64类型的元素列表转换为float类型的最快方法是什么?我目前正在使用简单的for loop迭代float().
我遇到过这篇文章:将numpy dtypes转换为本机python类型,但我的问题不是如何在python中转换类型,而是更具体地说,如何以最快的方式将一种类型的整个列表转换为另一种类型. python(即在这个特定情况下numpy.float64浮动).我希望有一些秘密的python机器,我没有遇到过它可以一次完成所有这一切:)
在coffeescript中使用meteor的Template..events api时,如何为.hover注册两个必需的函数?
我正在尝试以下方面:
Template.<template>.events
'hover #elementID': (
(ev) -> console.log 'hello world'
(ev) -> console.log 'bye world'
)
Run Code Online (Sandbox Code Playgroud) 我正在寻找在Keras上训练大于内存数据的最佳方法,并且目前注意到vanilla ImageDataGenerator往往比我希望的要慢.
我有两个网络训练Kaggle cat's vs dogs数据集(25000张图片):
1)这种方法正是以下代码:http://www.pyimagesearch.com/2016/09/26/a-simple-neural-network-with-python-and-keras/
2)与(1)相同,但使用ImageDataGenerator而不是将数据加载到内存中
注意:对于下面的内容,"预处理"意味着调整大小,缩放,展平
我在gtx970上找到以下内容:
对于网络1,每个时期需要约0秒.
对于网络2,如果在数据生成器中完成预处理,则每个时期需要大约36秒.
对于网络2,如果在数据生成器外部的第一遍中完成预处理,则每个时期需要约13秒.
这可能是ImageDataGenerator的速度限制(13s似乎是磁盘和RAM之间通常的10-100x差异......)?在使用Keras时,是否有更适合培训大于内存数据的方法/机制?例如,也许有办法让Keras中的ImageDataGenerator在第一个纪元后保存其处理过的图像?
谢谢!
我正在通过一个项目开始在天空中使用contiki.我正试图让空中节目现在正常工作.
我一直在查看examples/sky-shell-exec和apps/shell /.我觉得我需要通过sky-shell-exec和可能的test-deluge或codeprop提供的功能的某种组合.然而,通过代码阅读导致了一些概念上的障碍,涉及需要实现什么代码以及已经提供了什么代码以便获得一些无线编程功能(我对此非常新,并且没有太多嵌入式系统暴露在一起).我很抱歉我的问题有时模糊不清,但这是由于我一般的困惑,并不知道如何更好地进行.我主要希望得到一些小的东西(示例程序)现在可以将代码发送到mote然后使用发送的代码重新编程(例如发送的代码可能只是hello-world).
1)如何通过空中简单地将代码发送到mote?我觉得test-thluge是无线编程问题的"无线"传输部分,但是从代码中并没有完全理解它.
2)为了通过无线代码接收,应该在mote上运行什么代码?
3)我如何知道存储此代码的位置,然后知道如何加载它?我觉得这一步是天空shell-exec或多或少,但再次从代码中完全不了解它.
4)我正在网上阅读很多内容,如果代码库很大,那么无线编程是很困难的,因为ram是有限的.一般来说,我在无线传输时存储我的代码,如何知道/验证它是否在那里?另外,我怎么能简单地知道由于代码大小我是否会有内存存储问题(最终对于项目来说,需要传输大型代码库而不仅仅是单个模块)?
我再次为任何无根据的无知道歉,我意识到还有另一个类似于这个的线程,但我发现我需要对那里提到的每个组件进行更详细的解释(线程是:Contiki的Air编程).
谢谢
是否存在任何常见的git使用错误,或者通常是否存在任何原因导致如果这些冲突在之前的rebase中得到解决,那么rebase会重复前一个rebase的冲突?
此外,rebase是否优先考虑如何解决冲突?例如,rebase是否希望在代码中通常的git冲突括号中的两个可能的代码片段之间进行严格的选择,或者只是为了去除它之间的所有内容>>>,<<<?我很好奇,如果删除两个代码选择来解决冲突会影响rebase正确解决以后冲突的能力.
进一步阐述:我有一个master分支和一个dev分支.该dev分支我一直就在身边一段时间,所以不同的提交数量的增加相当大的,在100秒(我知道...应该dev到master更多的时候). dev分支本身有几个较小的特征分支从它切割,然后合并回来,只有被剪切,重新定位,与dev分支合并,永远不会master分支(我记得).我dev在master1周前将分支重新分支到分支机构.我已经在dev分支上做了一些更改,并希望master再次进行重新设置,以便我可以准备合并.master在1周的窗口中,分支的变化非常小,但代码文件不重叠.然而,当重订dev上master我看到了相同的一组矛盾的混帐升起时,我试图在当前变基相比,当我重订一周前为.
谢谢!
keras ×3
python ×2
tensorflow ×2
air ×1
c ×1
coffeescript ×1
contiki ×1
flash ×1
generator ×1
git ×1
git-rebase ×1
jquery ×1
meteor ×1
numpy ×1
python-3.x ×1
shell ×1