相关疑难解决方法(0)

Tensorflow while_loop用于培训

在我的问题中,我需要从每个训练步骤的数据运行GD和1个示例.已知问题是session.run()有开销,因此训练模型的时间太长.为了避免开销,我试图在一次run()调用的情况下对所有数据使用while_loop和train模型.但它的方法不起作用,train_op甚至不执行.以下是我正在做的简单示例:

data = [k*1. for k in range(10)]
tf.reset_default_graph()

i = tf.Variable(0, name='loop_i')
q_x = tf.FIFOQueue(100000, tf.float32)
q_y = tf.FIFOQueue(100000, tf.float32)

x = q_x.dequeue()
y = q_y.dequeue()
w = tf.Variable(0.)
b = tf.Variable(0.)
loss = (tf.add(tf.mul(x, w), b) - y)**2

gs = tf.Variable(0)

train_op = tf.train.GradientDescentOptimizer(0.05).minimize(loss, global_step=gs)

s = tf.Session()
s.run(tf.initialize_all_variables())

def cond(i):
    return i < 10

def body(i):
    return tf.tuple([tf.add(i, 1)], control_inputs=[train_op])


loop = tf.while_loop(cond, body, [i])

for _ in range(1):
    s.run(q_x.enqueue_many((data, )))
    s.run(q_y.enqueue_many((data, )))

s.run(loop)
s.close()
Run Code Online (Sandbox Code Playgroud)

我做错了什么?或者这个问题的另一个解决方案是开销过于昂贵?

谢谢!

tensorflow

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

两个进程可以共享同一GPU内存吗?(CUDA)

在CPU世界中,可以通过内存映射来做到这一点。GPU可以做类似的事情吗?

如果两个进程可以共享相同的CUDA上下文,我认为这将是微不足道的-只需传递GPU内存指针即可。是否可以在两个进程之间共享相同的CUDA上下文?

我想到的另一种可能性是将设备内存映射到内存映射的主机内存。由于它是内存映射的,因此可以在两个进程之间共享。这有意义/可能吗,并且有开销吗?

memory memory-management cuda gpu

8
推荐指数
1
解决办法
2899
查看次数

标签 统计

cuda ×1

gpu ×1

memory ×1

memory-management ×1

tensorflow ×1