Beispiel #1
0
import numpy as np
import time
import tensorflow as tf

from copy import copy

from data import get_all_data
from model import Model
from environment import evaluate_logp, evaluate
from utils import save, load

import sys


def info(*args):
    print(*args, file=sys.stdout, flush=True)


records = load("records")

for record in records:
    decisions = [[1, 7] for _ in range(len(record["cgroups"]))]
    info(record["best"][1], record["best_single"][1],
         evaluate(record, decisions))
Beispiel #2
0
                    ],
                    training=True)  # TODO: nodes that are already placed
                nodelogit = tf.reshape(nodelogit, strategy.shape)

                group_mask = np.zeros(nodelogit.shape, dtype=np.float32)
                for i in record['op_groups'][gid]:
                    group_mask[i, :] = 1
                p = sample(nodelogit.numpy())
                negative_logp += tf.reduce_mean(
                    tf.nn.sigmoid_cross_entropy_with_logits(
                        tf.convert_to_tensor(p, dtype=tf.float32), nodelogit) *
                    group_mask)
                for i in record['op_groups'][gid]:
                    strategy[i, :] = p[i, :]

            sqrt_time = evaluate(record, np.zeros((op_feats.shape[0], )),
                                 strategy)[0]
            if "hist" not in record:
                record["hist"] = [sqrt_time]
            else:
                record["hist"].append(sqrt_time)
                record["hist"] = record["hist"][-100:]
            baseline = np.mean(record["hist"])
            advantage = -(sqrt_time - baseline) / baseline
            loss = advantage * negative_logp

            # ncclmask, nodemask, advantage, sqrt_time, oom, leftout = sample_and_evaluate(record, nccllogit.numpy(), nodelogit.numpy()) # numpy to turn off gradient tracking
            # for i in oom:
            #     negative_logp = tf.nn.sigmoid_cross_entropy_with_logits([0.] * nodelogit.shape[1], nodelogit[i, :])
            #     loss += .01 * tf.reduce_sum(negative_logp)
            # for gi in leftout:
            #     negative_logp = tf.nn.sigmoid_cross_entropy_with_logits([1.] * nodelogit.shape[0], nodelogit[:, gi])
Beispiel #3
0
#!/usr/bin/python39
from environment import evaluate, debug_draw_errors

# Static side effects
const_velocity = None


def simple_controller(velocity, terrain):
    global const_velocity
    if const_velocity is None:
        # Assume the first input as the speed we want to keep
        const_velocity = velocity
    if velocity > const_velocity: action = 0.1
    else: action = 1
    return action


if __name__ == '__main__':
    nfailed, errors = evaluate(simple_controller, silent=False)
    print(f'Car stuck inside valley {nfailed} times')
    debug_draw_errors(errors).show()
Beispiel #4
0
import parser
import exc
import environment

if __name__ == '__main__':
  import sys
  code = sys.stdin.read()

  try:
    rst = list(parser.parsing(code))
    env = environment.Environment(environment.INITIAL_ENV, None)
    env['env'] = env
    ret_value = map( lambda rst:environment.evaluate(env, rst), rst)
  except exc.SyntaxError as e:
    e.display_error()
  else:
    print 'implement result : ', ret_value
Beispiel #5
0
    if loss_new <= loss_old:
        return 1
    else:
        return np.exp(1 - 1 / T)

record = get_all_data()[2]

# decisions = [ [1, 7] for _ in range(len(record["cgroups"])) ]
# evaluate(record, decisions)
# sys.exit(0)

s, baseline = None, 9999
for nccl in range(2):
    for i in range(8):
        decisions = [ [nccl, i] for _ in range(len(record["cgroups"])) ]
        loss = evaluate(record, decisions)
        info(decisions, loss)
        if loss < baseline:
            s, baseline = decisions, loss

loss = 1
best = 1
for epoch in range(20000):
    T = (0.5 * epoch + 10000) / 20000
    s_new = neighbour(s)
    loss_new = evaluate(record, s_new) / baseline
    if loss_new < best:
        best = loss_new
    if P(loss, loss_new, T) > np.random.rand():
        s, loss = s_new, loss_new
        info(epoch, loss, best)
Beispiel #6
0
#!/usr/bin/python39
from environment import evaluate, debug_draw_errors
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()

def load_controller(filename):
    matlab_controller = eng.readfis(filename)
    def controller(velocity, terrain):
        inp = matlab.double([velocity, terrain])
        action = eng.evalfis(matlab_controller, inp)
        return action
    return controller

SIT215_controller = load_controller('PBL_Task_1.fis')
nfailed, errors = evaluate(SIT215_controller,silent=False)
print(f'Car stuck inside valley {nfailed} times')
debug_draw_errors(errors).show()