|
- import logging
- import numpy as np
- import mindspore.context as context
- import mindspore.ops.composite as C
- from mindspore import Tensor, Parameter
- from mindspore.nn import Cell
- from mindspore.ops.operations import _grad_ops as G
- import mindspore.ops.operations as P
- from mindspore.nn.composite_ops import BiasAdd, BiasAddGrad
-
- log = logging.getLogger("ME")
- log.setLevel(level=logging.DEBUG)
- context.set_context(mode=context.GRAPH_MODE, save_graphs=True, device_target="Ascend")
-
- class Net(Cell):
- def __init__(self):
- super(Net, self).__init__()
- self.bias_add = BiasAdd()
-
- def construct(self, x, bias):
- return self.bias_add(x, bias)
-
- class Net_grad(Cell):
- def __init__(self):
- super(Net_grad, self).__init__()
- self.bias_add = BiasAdd()
-
- def construct(self, x, bias, dout):
- return C.grad_all_with_sens(self.bias_add)(x, bias, dout)
-
- class Net1(Cell):
- def __init__(self):
- super(Net1, self).__init__()
- self.bias_add = P.BiasAdd()
-
- def construct(self, x, bias):
- return self.bias_add(x, bias)
-
- class Net_grad1(Cell):
- def __init__(self):
- super(Net_grad1, self).__init__()
- self.bias_add_grad = G.BiasAddGrad()
-
- def construct(self, dout):
- return self.bias_add_grad(dout)
-
- class Net_grad2(Cell):
- def __init__(self):
- super(Net_grad2, self).__init__()
- self.bias_add_grad = BiasAddGrad()
-
- def construct(self, dout):
- return self.bias_add_grad(dout)
-
- # composite not inline funcGraph
- def test_composite_bias_add():
- x = np.random.normal(0, 1, [2, 3, 2, 3]).astype(np.float32)
- bias = np.random.normal(0, 1, [3]).astype(np.float32)
- net = Net()
- net1 = Net1()
-
- result = net(Tensor(x), Tensor(bias))
- result1 = net1(Tensor(x), Tensor(bias))
- print("=======================================")
- print("x:\n{}".format(x))
- print("bias:\n{}".format(bias))
- print("result:\n{}".format(result))
- print("result1:\n{}".format(result1))
- print("=======================================")
-
- def test_composite_bias_add_grad():
- x = np.random.normal(0, 1, [2, 3, 2, 3]).astype(np.float32)
- bias = np.random.normal(0, 1, [3]).astype(np.float32)
- dout = np.random.normal(0, 1, [2, 3, 2, 3]).astype(np.float32)
- # dout = np.ones([2, 3, 4, 4]).astype(np.float32)
- net1 = Net_grad1()
- net = Net_grad()
-
- result1 = net1(Tensor(dout))
- result_1 = net(Tensor(x), Tensor(bias), Tensor(dout))
- print("=======================================")
- print("x:\n{}".format(x))
- print("bias:\n{}".format(bias))
- print("dout:\n{}".format(dout))
- print("result_1:\n{}".format(result_1))
- print("=======================================")
- print("result1:\n{}".format(result1))
- print("=======================================")
-
- def test_composite_bias_add_grad1():
- x = np.random.normal(0, 1, [2, 3, 2, 3]).astype(np.float32)
- bias = np.random.normal(0, 1, [3]).astype(np.float32)
- dout = np.random.normal(0, 1, [2, 3, 2, 3]).astype(np.float32)
- # dout = np.ones([2, 3, 4, 4]).astype(np.float32)
- net1 = Net_grad1()
- net = Net_grad2()
-
- result1 = net1(Tensor(dout))
- result_1 = net(Tensor(dout))
- print("=======================================")
- print("x:\n{}".format(x))
- print("bias:\n{}".format(bias))
- print("dout:\n{}".format(dout))
- print("result_1:\n{}".format(result_1))
- print("=======================================")
- print("result1:\n{}".format(result1))
- print("=======================================")
-
- #test_composite_bias_add()
- test_composite_bias_add_grad1()
|