相关疑难解决方法(0)

当存在GPU时,如何在TensorFlow中的单个脚本中训练多个模型?

假设我可以在一台机器上访问多个GPU(为了争论,假设8GPU,每台机器的最大内存为8GB,每台机器有一定数量的RAM和磁盘).我想在一个单独的脚本和一台机器中运行一个程序来评估TensorFlow中的多个模型(比如50或200),每个模型都有不同的超参数设置(比如,步长,衰减率,批量大小,时期/迭代等).在训练结束时假设我们只是记录它的准确性并摆脱模型(如果你想假设模型经常检查指向,那么它可以扔掉模型并从头开始训练.你也可以假设某些其他数据可能被记录,如特定的超级参数,列车,验证,列车错误被记录为我们训练等).

目前我有一个(伪)脚本,如下所示:

def train_multiple_modles_in_one_script_with_gpu(arg):
    '''
    trains multiple NN models in one session using GPUs correctly.

    arg = some obj/struct with the params for trianing each of the models.
    '''
    #### try mutliple models
    for mdl_id in range(100):
        #### define/create graph
        graph = tf.Graph()
        with graph.as_default():
            ### get mdl
            x = tf.placeholder(float_type, get_x_shape(arg), name='x-input')
            y_ = tf.placeholder(float_type, get_y_shape(arg))
            y = get_mdl(arg,x)
            ### get loss and accuracy
            loss, accuracy = get_accuracy_loss(arg,x,y,y_)
            ### get optimizer variables
            opt = get_optimizer(arg)
            train_step = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network tensorflow

22
推荐指数
1
解决办法
9793
查看次数

多处理中不同工作人员的输出相同

我有一些非常简单的案例,可以将工作分解并分配给工人.我从这里尝试了一个非常简单的多处理示例:

import multiprocessing
import numpy as np
import time

def do_calculation(data):
    rand=np.random.randint(10)
    print data, rand
    time.sleep(rand)
    return data * 2

if __name__ == '__main__':
    pool_size = multiprocessing.cpu_count() * 2
    pool = multiprocessing.Pool(processes=pool_size)

    inputs = list(range(10))
    print 'Input   :', inputs

    pool_outputs = pool.map(do_calculation, inputs)
    print 'Pool    :', pool_outputs
Run Code Online (Sandbox Code Playgroud)

上面的程序产生以下输出:

Input   : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 7
1 7
2 7
5 7
3 7
4 7
6 7
7 7
8 6 …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing

13
推荐指数
1
解决办法
3113
查看次数

multiprocessing.Pool 似乎在 Windows 中工作,但在 ubuntu 中不起作用?

已解决:问题是 Wingware Python IDE。我想现在自然的问题是这怎么可能以及如何解决。

我昨天问了一个问题(Python 中的 multiprocessing.Pool 问题),这个问题几乎相同,但我发现它似乎可以在 Windows 计算机上运行,​​而不是在我的 ubuntu 中运行。在这篇文章的最后,我将发布一个稍微不同的代码版本,它做同样的事情。

我的问题的简短摘要:在 Python 中使用 multiprocessing.Pool 时,我并不总是能够获得我要求的工人数量。当这种情况发生时,程序就会停止。

我一整天都在寻找解决方案,然后我开始考虑Noahs对我上一个问题的评论。他说它在他的机器上运行,所以我将代码提供给我的同事,他运行带有 Enthoughts 64 位 Python 2.7.1 发行版的 Windows 机器。我与我在 ubuntu 上运行的巨大差异相同。我还提到我们都有 Wingware Python IDE,但我怀疑这是否重要?

当我的同事在他的机器上运行代码时,我的代码有两个问题不会出现。

  1. 我并不总是能够得到我要求的四名工人(尽管我的机器有 12 名工人)。发生这种情况时,该过程会停止并且不会继续。不会引发异常或错误。

  2. 当我能够得到我要求的四名工人(大约发生 5 次左右)时,生成的数字(纯随机数)对于所有四张图片都完全相同。我的同事不是这种情况。

有些事情很可疑,我非常感谢你们提供的任何帮助。

编码:

import multiprocessing as mp
import scipy as sp
import scipy.stats as spstat
import pylab

def testfunc(x0, N):
    print 'working with x0 = %s' % x0
    x = [x0]
    for i in xrange(1,N):
        x.append(spstat.norm.rvs(size = 1)) # stupid appending …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

4
推荐指数
2
解决办法
4834
查看次数

如何让最艰难的部分在python中占用最长的时间

我有一些简单的代码如下.

count =0 
iters = 1000000 
l=10 
k=10 
for i in xrange(iters):
    t = np.random.choice([-1,1],size=l+k-1)
    v = np.random.choice([-1,1], size = l)
    if (not np.convolve(v, t, 'valid').any()):
        count += 1

print count
Run Code Online (Sandbox Code Playgroud)

当我对此进行分析时,我惊讶地发现只有一小部分时间花在np.convolve理论上应该是最昂贵的部分.有没有办法加快其他部分,以便np.convolve占用大部分时间?

我很乐意使用pypy但遗憾的是它还不支持np.convolve.


有没有办法让它足够快,iters = 1亿,l = 12,k = 12可以终止?

python performance numpy

2
推荐指数
1
解决办法
305
查看次数