test_elementwise_add_op.py 3.6 KB
Newer Older
G
gongweibao 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
import unittest
import numpy as np
from op_test import OpTest


class TestElementwiseOp(OpTest):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.uniform(0.1, 1, [13, 17]).astype("float32"),
            'Y': np.random.uniform(0.1, 1, [13, 17]).astype("float32")
        }
        self.outputs = {'Out': np.add(self.inputs['X'], self.inputs['Y'])}

    def test_check_output(self):
        self.check_output()

    def test_check_grad_normal(self):
        self.check_grad(['X', 'Y'], 'Out', max_relative_error=0.005)

    def test_check_grad_ingore_x(self):
        self.check_grad(
            ['Y'], 'Out', max_relative_error=0.005, no_grad_set=set("X"))

    def test_check_grad_ingore_y(self):
        self.check_grad(
            ['X'], 'Out', max_relative_error=0.005, no_grad_set=set('Y'))


class TestElementwiseAddOp_Vector(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.random((32, )).astype("float32"),
            'Y': np.random.random((32, )).astype("float32")
        }
        self.outputs = {'Out': np.add(self.inputs['X'], self.inputs['Y'])}


class TestElementwiseAddOp_broadcast_0(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 3, 4).astype(np.float32),
            'Y': np.random.rand(2).astype(np.float32)
        }

        self.attrs = {'axis': 0}
        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(2, 1, 1)
        }


class TestElementwiseAddOp_broadcast_1(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 3, 4).astype(np.float32),
            'Y': np.random.rand(3).astype(np.float32)
        }

        self.attrs = {'axis': 1}
        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(1, 3, 1)
        }


class TestElementwiseAddOp_broadcast_2(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 3, 4).astype(np.float32),
            'Y': np.random.rand(4).astype(np.float32)
        }

        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(1, 1, 4)
        }


class TestElementwiseAddOp_broadcast_3(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 3, 4, 5).astype(np.float32),
            'Y': np.random.rand(3, 4).astype(np.float32)
        }

        self.attrs = {'axis': 1}
        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(1, 3, 4, 1)
        }


Q
qijun 已提交
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
class TestElementwiseAddOp_rowwise_add_0(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 3, 4).astype(np.float32),
            'Y': np.random.rand(3, 4).astype(np.float32)
        }

        self.attrs = {'axis': 1}
        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(1, 3, 4)
        }


class TestElementwiseAddOp_rowwise_add_1(TestElementwiseOp):
    def setUp(self):
        self.op_type = "elementwise_add"
        self.inputs = {
            'X': np.random.rand(2, 1).astype(np.float32),
            'Y': np.random.rand(1).astype(np.float32)
        }

        self.attrs = {'axis': 1}
        self.outputs = {
            'Out': self.inputs['X'] + self.inputs['Y'].reshape(1, 1)
        }


G
gongweibao 已提交
123 124
if __name__ == '__main__':
    unittest.main()