コード例 #1
0
 def test_dot(self):
     with self.assertRaises(ValueError):
         XM @ YM
     self.assertEqual(XV@YV, 0)
     self.assertEqual(XM@XV, LA.array([-100, -50]))
     self.assertEqual(
         XM.T()@YM, LA.array([[50, 50, 50], [20, 20, 20], [80, 80, 80]]))
コード例 #2
0
    def fgsm(self, x, t):
        d_t = LA.array([[1 if ti == i + 1 else 0 for i in range(23)]
                        for ti in t])
        h = -d_t + x
        h = h @ self.w3
        h = h * F.drelu(h)
        h = h @ self.w2
        h = h * F.drelu(h)
        d = h @ self.w1

        return F.sign(d) * self.eps0
コード例 #3
0
def load_params():
    p = Path("../ml/param.txt")
    with p.open() as f:
        params = f.readlines()

    h = 256
    c = 23
    w1 = LA.array([list(map(float, param.split())) for param in params[:h]])
    b1 = LA.array([list(map(float, params[h].split()))] * 154)
    w2 = LA.array(
        [list(map(float, param.split())) for param in params[h + 1:h * 2 + 1]])
    b2 = LA.array([list(map(float, params[h * 2 + 1].split()))] * 154)
    w3 = LA.array([
        list(map(float, param.split()))
        for param in params[h * 2 + 2:(h + 1) * 2 + c]
    ])
    b3 = LA.array([list(map(float, params[(h + 1) * 2 + c].split()))] * 154)

    return w1, b1, w2, b2, w3, b3
コード例 #4
0
 def test_div(self):
     self.assertEqual(XV/2, LA.array([2.5, 0., -2.5]))
     self.assertEqual(XM/2, LA.array([[5, 10, 15], [20, 0, 25]]))
コード例 #5
0
 def test_multiply(self):
     self.assertEqual(XV*3, LA.array([15, 0, -15]))
     self.assertEqual(XM*3, LA.array([[30, 60, 90], [120, 0, 150]]))
     self.assertEqual(XM*YM, LA.array([[10, 20, 30], [40, 0, 50]]))
コード例 #6
0
 def test_sub(self):
     self.assertEqual(XV-5, LA.array([0, -5, -10]))
     self.assertEqual(XM-YM, LA.array([[9, 19, 29], [39, -1, 49]]))
コード例 #7
0
def softmax(x):
    if x._is_vector():
        y = LA.array([exp(xi) for xi in x])
        return y / sum(y)
    y = [[exp(xij) for xij in xi] for xi in x]
    return LA.array([list(LA.array(yi) / sum(yi)) for yi in y])
コード例 #8
0
 def test_drelu(self):
     self.assertEqual(drelu(XV), LA.array([1, 0, 0]))
     self.assertEqual(drelu(XM), LA.array([[1, 0, 0], [1, 0, 0]]))
コード例 #9
0
import unittest

import core.linalg as LA
from functions.activation.relu import relu, drelu


XV = LA.array([2, 0, -1])
XM = LA.array([[1, 0, -1], [0.1, 0.0, -0.1]])


class TestReLU(unittest.TestCase):
    def test_relu(self):
        self.assertEqual(relu(XV), LA.array([2, 0, 0]))
        self.assertEqual(relu(XM), LA.array([[1, 0, 0], [0.1, 0, 0]]))

    def test_drelu(self):
        self.assertEqual(drelu(XV), LA.array([1, 0, 0]))
        self.assertEqual(drelu(XM), LA.array([[1, 0, 0], [1, 0, 0]]))
コード例 #10
0
ファイル: test_sign.py プロジェクト: natsukium/PFNIntern2018
import unittest

import core.linalg as LA
from functions.math.sign import sign

XV = LA.array([1, 0.1, 0, -0.1, -1])
XM = LA.array([[1, 0.1, 0], [-0.1, -1, 0]])


class TestSign(unittest.TestCase):
    def test_sign(self):
        self.assertEqual(sign(XV), LA.array([1, 1, 0, -1, -1]))
        self.assertEqual(sign(XM), LA.array([[1, 1, 0], [-1, -1, 0]]))
コード例 #11
0
 def baseline(self, x):
     eps = LA.array([[random.choice((-1, 1)) for i in range(1024)]
                     for j in range(154)])
     return eps * self.eps0
コード例 #12
0
def drelu(x):
    if x._is_vector():
        return LA.array([xi > 0 for xi in x])
    return LA.array([[xij > 0 for xij in xi] for xi in x])
コード例 #13
0
import unittest
from math import exp, log

import core.linalg as LA
from functions.loss.cross_entropy import cross_entropy

X = LA.array([[0.5, 0.3, 0.6]])
T = LA.array([2])


class TestCrossEntropy(unittest.TestCase):
    def test_cross_entropy(self):
        sum_exp = exp(X[0, 0]) + exp(X[0, 1]) + exp(X[0, 2])
        entropy = -X[0, T[0] - 1] + log(sum_exp)
        self.assertEqual(cross_entropy(X, T)[0], entropy)
コード例 #14
0
ファイル: test_utils.py プロジェクト: natsukium/PFNIntern2018
import unittest

import core.linalg as LA
from utils import load_params, accuracy

Y = LA.array([i for i in range(23)])
T = LA.array([j + j % 2 for j in range(23)])


class TestUtils(unittest.TestCase):
    def test_load_params(self):
        w1, b1, w2, b2, w3, b3 = load_params()
        self.assertEqual(w1.shape, (256, 1024))
        self.assertEqual(b1.shape, (154, 256))
        self.assertEqual(w2.shape, (256, 256))
        self.assertEqual(b2.shape, (154, 256))
        self.assertEqual(w3.shape, (23, 256))
        self.assertEqual(b3.shape, (154, 23))

    def test_accuracy(self):
        self.assertEqual(accuracy(Y, T), 12 / 23)
コード例 #15
0
import unittest

import core.linalg as LA
from functions.activation.softmax import softmax

XV = LA.array([0.5, 0.7, 0.3])
XM = LA.array([[0.5, 0.7, 0.3], [0.2, 0.6, 0.8]])
# chainer.functions.softmaxより
SV = LA.array([0.32893292, 0.40175958, 0.2693075])
SM = LA.array([[0.32893292, 0.40175958, 0.2693075],
               [0.23180647, 0.34581461, 0.42237892]])
EPS = 1e-5


class TestSoftmax(unittest.TestCase):
    def test_softmax(self):
        self.assertTrue(max(softmax(XV) - SV) < EPS)
        self.assertTrue(max(max(softmax(XM) - SM)) < EPS)
コード例 #16
0
 def test_transpose(self):
     self.assertEqual(
         XM.transpose(), LA.array([[10, 40], [20, 0], [30, 50]]))
コード例 #17
0
import unittest

import core.linalg as LA
from functions.math.argmax import argmax

X = LA.array([0.1, 0.4, 0.8, 0.3, 0.5])


class TestArgmax(unittest.TestCase):
    def test_argmax(self):
        self.assertEqual(argmax(X), 2)
コード例 #18
0
ファイル: test_sign.py プロジェクト: natsukium/PFNIntern2018
 def test_sign(self):
     self.assertEqual(sign(XV), LA.array([1, 1, 0, -1, -1]))
     self.assertEqual(sign(XM), LA.array([[1, 1, 0], [-1, -1, 0]]))
コード例 #19
0
 def test_relu(self):
     self.assertEqual(relu(XV), LA.array([2, 0, 0]))
     self.assertEqual(relu(XM), LA.array([[1, 0, 0], [0.1, 0, 0]]))
コード例 #20
0
import unittest

import core.linalg as LA


XV = LA.array([5, 0, -5])
YV = LA.array([1., 1., 1.])
XM = LA.array([[10, 20, 30], [40, 0, 50]])
YM = LA.array([[1., 1., 1.], [1., 1., 1.]])


class TestArray(unittest.TestCase):
    def test_add(self):
        with self.assertRaises(ValueError):
            XV + YM
        self.assertEqual(XV+YV, LA.array([6., 1., -4.]))
        self.assertEqual(XM+YM, LA.array([[11., 21, 31.], [41., 1., 51]]))

    def test_sub(self):
        self.assertEqual(XV-5, LA.array([0, -5, -10]))
        self.assertEqual(XM-YM, LA.array([[9, 19, 29], [39, -1, 49]]))

    def test_multiply(self):
        self.assertEqual(XV*3, LA.array([15, 0, -15]))
        self.assertEqual(XM*3, LA.array([[30, 60, 90], [120, 0, 150]]))
        self.assertEqual(XM*YM, LA.array([[10, 20, 30], [40, 0, 50]]))

    def test_dot(self):
        with self.assertRaises(ValueError):
            XM @ YM
        self.assertEqual(XV@YV, 0)
コード例 #21
0
 def test_add(self):
     with self.assertRaises(ValueError):
         XV + YM
     self.assertEqual(XV+YV, LA.array([6., 1., -4.]))
     self.assertEqual(XM+YM, LA.array([[11., 21, 31.], [41., 1., 51]]))
コード例 #22
0
def sign(x):
    if x._is_vector():
        return LA.array([1 if xi > 0 else -1 if xi < 0 else 0 for xi in x])
    return LA.array([[1 if xij > 0 else -1 if xij < 0 else 0 for xij in xi]
                     for xi in x])