Exemplo n.º 1
0
def tf_worker(dqn: DQN, s_queue):
    """
    A single process that removes evaluation tasks from a queue.
    It constructs the NN in TensorFlow and uses it to evaluate board states sent to it.
    Args:
        dqn, an uninitialized TensorFlow object representing the DQN
        s_queue, the queue of board states.
    Returns:
        self
    """

   #Perform TensorFlow initialization 
    with tf.Graph().as_default() as dqn.tf_graph:
        dqn.build_model() 
        with tf.Session() as dqn.tf_session:
            dqn._init_tf()

    try:
        index, state = s_queue.get(True, 5)
        while index != -1:
            #Reshape to align with network input.
            state = state.reshape(1, 263)
            #Pass to Tensorflow here to evaluate
            s_val = dqn.get_q_value(state, "dqn")

            #   (global) Update root action with evaluation; average child values
            if not isclose(q_vals[index], 0.0, rel_tol=1e-6):
                q_vals[index] = (q_vals[index] + s_val)/2
            else:
                q_vals[index] = s_val
            index, state = s_queue.get(True, 5)
            
    except Empty as e:
        raise GameTreeFailure
    except:
        raise
Exemplo n.º 2
0
def q_par(dqn, g1):
    print(dqn.get_q_value(g1, "dqn"))


def par(a):
    print(a)


features = 20
h1 = 10
h2 = 5

g1 = np.arange(40).reshape(2, 20)

dqn = DQN(features, h1, h2, "models/tf_multi_1")
with dqn.tf_graph.as_default():
    dqn.build_model()
    with tf.Session() as dqn.tf_session:
        dqn._init_tf()
        print(dqn.tf_session.run(dqn.model, feed_dict={dqn.s_: g1}))

processes = []

for p in range(4):
    processes.append(mp.Process(target=q_par, args=(dqn, g1)))
    processes[p].start()

for p in range(4):
    processes[p].join()
Exemplo n.º 3
0
import multiprocessing as mp
import sys

def q_par(dqn, g1):
    print(dqn.get_q_value(g1, "dqn"))

def par(a):
    print(a)

features = 20
h1 = 10
h2 = 5

g1 = np.arange(40).reshape(2, 20)

dqn = DQN(features, h1, h2, "models/tf_multi_1")
with dqn.tf_graph.as_default():
    dqn.build_model()
    with tf.Session() as dqn.tf_session:
        dqn._init_tf()
        print(dqn.tf_session.run(dqn.model, feed_dict={dqn.s_: g1}))

processes = []

for p in range(4):
    processes.append(mp.Process(target=q_par, args=(dqn,g1)))
    processes[p].start()

for p in range(4):
    processes[p].join()