Tensorflow在循环中多次运行会话

时间:2018-02-13 12:46:32

标签: python tensorflow

我正在尝试使用简单的Tensorflow代码来多次计算两个矩阵的乘积。我的代码如下:

import numpy as np
import tensorflow as tf

times = 10
alpha = 2
beta = 3

graph = tf.Graph()

with graph.as_default():
    A = tf.placeholder(tf.float32)
    B = tf.placeholder(tf.float32)
    C = tf.placeholder(tf.float32)
    alpha = tf.constant(2.0, shape=[1, 1])
    beta = tf.constant(3.0, shape=[1, 1])
    D = alpha*tf.matmul(A, B) + beta*C          

with tf.Session(graph=graph) as session:
    tf.initialize_all_variables().run()
    for time in xrange(1, 2):
        N = 10**time
        a = tf.constant(np.random.random((N, N)))
        b = tf.constant(np.random.random((N, N)))
        c = tf.constant(np.random.random((N, N)))

        for num in xrange(1, 3):
            print num
            session.run(D, feed_dict={A:a.eval(), B:b.eval(), C:c.eval()})      
            c = D

在for循环中运行session.run():

for num in xrange(1, 3):
    print num
    session.run(D, feed_dict={A:a.eval(), B:b.eval(), C:c.eval()})      
    c = D

我收到以下错误:

Error on running session.run() in a loop

我在Tensorflow网站上查看了MNIST的示例代码,但他们在for循环中以类似的方式运行'session.run()'。我正在寻找有关为什么我的代码中的'session.run()'在for循环中不起作用的任何见解。

谢谢。

1 个答案:

答案 0 :(得分:4)

with tf.Session(graph=graph) as session:
    tf.initialize_all_variables().run()
    for time in xrange(1, 2):
        N = 10**time
        a = np.random.random((N, N))
        b = np.random.random((N, N))
        c = np.random.random((N, N))

        for num in xrange(1, 3):
            print num
            c = session.run(D, feed_dict={A:a, B:b, C:c})

您可以直接提供numpy数组,Session.run(D, ...)返回D's评估。