Beispiel #1
0
def Q8(A, b):
    A_node = nn.Input("A")
    x = nn.Input("x")
    b_node = nn.Input("b")
    expression = A_node * x + b_node
    cc = expression.compile(golden.Builder())
    return cc(A=A, b=b)
Beispiel #2
0
def grade_Q9():
    x = np.random.rand(100, 100)
    y = prj01.Q9(8).compile(golden.Builder())(x=x)
    x2 = prj01.Q3(x, x)
    x4 = prj01.Q3(x2, x2)
    x8 = prj01.Q3(x4, x4)
    return np.allclose(y, x8)
def grade_Q8():
    relu = nn.ReLU()
    flatten = nn.Flatten()
    f1 = nn.Linear("f1", 28 * 28, 100)
    f2 = nn.Linear("f2", 100, 10)
    x = nn.Input2d("images", 28, 28, 1)
    x = flatten(x)
    x = f2(relu(f1(x)))
    x.resolve(np.load("msimple_params.npz"))
    mnist_test = np.load("mnist_test.npz")
    images = mnist_test["images"][:1000]

    infer0 = x.compile(golden.Builder())
    infer1 = x.compile(cpp.Builder())
    label0 = infer0(images=images).argmax(axis=1)
    label1 = infer1(images=images).argmax(axis=1)
    return np.allclose(label0, label1)
def grade_Q4():
    relu = nn.ReLU()
    flatten = nn.Flatten()
    f1 = nn.Linear("f1", 28 * 28, 32)
    f2 = nn.Linear("f2", 32, 10)
    x = nn.Input2d("images", 28, 28, 1)
    x = flatten(x)
    x = f2(relu(f1(x)))
    x.resolve(np.load("p5_params.npz"))
    mnist_test = np.load("mnist_test.npz")
    images = mnist_test["images"]
    labels = mnist_test["labels"]

    infer = x.compile(golden.Builder())
    pred_labels = infer(images=images).argmax(axis=1)
    count = sum(labels == pred_labels)
    return count > 9500
Beispiel #5
0
def grade_Q4():
    pool = nn.MaxPool2d(2, 2)
    relu = nn.ReLU()
    flatten = nn.Flatten()
    x = nn.Input2d("images", 28, 28, 1)
    c1 = nn.Conv2d("c1", 1, 8, 5) # 28->24
    x = pool(relu(c1(x))) # 24->12
    c2 = nn.Conv2d("c2", 8, 8, 5) # 12->8
    x = pool(relu(c2(x))) # 8->4
    f = nn.Linear("f", 8*4*4, 10)
    x = f(flatten(x))
    x.resolve(np.load("p6_params.npz"))
    mnist_test = np.load("mnist_test.npz")
    images = mnist_test["images"]
    labels = mnist_test["labels"]

    infer = x.compile(golden.Builder())
    pred_labels = infer(images = images).argmax(axis = 1)
    count = sum(labels == pred_labels)
    return count > 9500
def grade_Q10():
    pool = nn.MaxPool2d(2, 2)
    relu = nn.ReLU()
    flatten = nn.Flatten()

    x = nn.Input2d("images", 28, 28, 1)
    c1 = nn.Conv2d("c1", 1, 8, 3)  # 28->26
    c2 = nn.Conv2d("c2", 8, 8, 3)  # 26->24
    x = pool(relu(c2(relu(c1(x)))))  # 24->12
    c3 = nn.Conv2d("c3", 8, 16, 3)  # 12->10
    c4 = nn.Conv2d("c4", 16, 16, 3)  # 10->8
    x = pool(relu(c4(relu(c3(x)))))  # 8->4
    f = nn.Linear("f", 16 * 4 * 4, 10)
    x = f(flatten(x))

    x.resolve(np.load("mnist_params.npz"))
    mnist_test = np.load("mnist_test.npz")
    images = mnist_test["images"][:1000]

    infer0 = x.compile(golden.Builder())
    infer1 = x.compile(cpp.Builder())
    label0 = infer0(images=images).argmax(axis=1)
    label1 = infer1(images=images).argmax(axis=1)
    return np.allclose(label0, label1)
Beispiel #7
0
def is_same(p, n, **kwargs):
    e0 = p.compile(golden.Builder())
    e1 = p.compile(cpp.Builder())
    nkwargs = [random_kwargs(kwargs) for i in range(n)]
    return all(
        [np.allclose(e0(**nkwargs[i]), e1(**nkwargs[i])) for i in range(n)])
Beispiel #8
0
def grade_Q8():
    A = np.random.rand(100, 100)
    x = np.random.rand(100, 1)
    b = np.random.rand(100, 1)
    y = prj01.Q8(A, b).compile(golden.Builder())(x=x)
    return np.allclose(y, prj01.Q2(prj01.Q3(A, x), b))
Beispiel #9
0
def grade_Q7():
    a = np.random.rand(100, 50)
    b = np.random.rand(100, 10)
    c = np.random.rand(10, 50)
    d = prj01.Q7().compile(golden.Builder())(a=a, b=b, c=c)
    return np.allclose(d, prj01.Q2(a, prj01.Q3(b, c)))
Beispiel #10
0
def grade_Q6():
    a = np.random.rand(100, 10)
    b = np.random.rand(100, 10)
    c = prj01.Q6().compile(golden.Builder())(a=a, b=b)
    return np.allclose(c, prj01.Q2(a, b))
Beispiel #11
0
def grade_Q10():
    x = np.random.randn(100, 100)
    y = prj01.Q10().compile(golden.Builder())(x=x)
    return np.allclose(y, np.abs(x))