parent
d3373c5b85
commit
3402b6ad39
@ -1,3 +1,3 @@
|
||||
add_python_test(test_framework test_protobuf.py test_scope.py
|
||||
test_default_scope_funcs.py test_op_creation_methods.py
|
||||
test_tensor.py test_fc_op.py)
|
||||
test_tensor.py test_fc_op.py test_add_two_op.py)
|
||||
|
@ -0,0 +1,50 @@
|
||||
import paddle.v2.framework.core as core
|
||||
import unittest
|
||||
import numpy
|
||||
import paddle.v2.framework.create_op_creation_methods as creation
|
||||
|
||||
|
||||
class OpTestMeta(type):
|
||||
def __new__(cls, name, bases, attrs):
|
||||
obj = super(OpTestMeta, cls).__new__(cls, name, bases, attrs)
|
||||
|
||||
def test_all(self):
|
||||
func = getattr(creation.op_creations, self.type, None)
|
||||
self.assertIsNotNone(func)
|
||||
|
||||
scope = core.Scope(None)
|
||||
kwargs = dict()
|
||||
|
||||
for in_name in func.all_input_args:
|
||||
if hasattr(self, in_name):
|
||||
kwargs[in_name] = in_name
|
||||
var = scope.create_var(in_name).get_tensor()
|
||||
arr = getattr(self, in_name)
|
||||
var.set_dims(arr.shape)
|
||||
var.set(arr)
|
||||
else:
|
||||
kwargs[in_name] = "@EMPTY@"
|
||||
|
||||
for out_name in func.all_output_args:
|
||||
if hasattr(self, out_name):
|
||||
kwargs[out_name] = out_name
|
||||
scope.create_var(out_name).get_tensor()
|
||||
|
||||
for attr_name in func.all_attr_args:
|
||||
if hasattr(self, attr_name):
|
||||
kwargs[attr_name] = getattr(self, attr_name)
|
||||
|
||||
op = func(**kwargs)
|
||||
|
||||
op.infer_shape(scope)
|
||||
|
||||
ctx = core.DeviceContext.cpu_context()
|
||||
op.run(scope, ctx)
|
||||
|
||||
for out_name in func.all_output_args:
|
||||
actual = numpy.array(scope.get_var(out_name).get_tensor())
|
||||
expect = getattr(self, out_name)
|
||||
numpy.testing.assert_almost_equal(actual, expect)
|
||||
|
||||
obj.test_all = test_all
|
||||
return obj
|
@ -0,0 +1,17 @@
|
||||
import unittest
|
||||
from op_test_util import OpTestMeta
|
||||
import numpy
|
||||
|
||||
|
||||
class TestAddOp(unittest.TestCase):
|
||||
__metaclass__ = OpTestMeta
|
||||
|
||||
def setUp(self):
|
||||
self.type = "add_two"
|
||||
self.X = numpy.random.random((342, 345)).astype("float32")
|
||||
self.Y = numpy.random.random((342, 345)).astype("float32")
|
||||
self.Out = self.X + self.Y
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in new issue