You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_math_ops.py 18 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  1. # Copyright 2021 Huawei Technologies Co., Ltd
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # ============================================================================
  15. """ test math ops """
  16. import numpy as np
  17. import mindspore.context as context
  18. import mindspore.nn as nn
  19. from mindspore import Tensor
  20. from mindspore.ops import operations as P
  21. context.set_context(mode=context.GRAPH_MODE)
  22. class Add(nn.Cell):
  23. def __init__(self):
  24. super(Add, self).__init__()
  25. self.add = P.Add()
  26. def construct(self, x, y):
  27. z = self.add(x, y)
  28. return z
  29. def test_number_add_number():
  30. input_x = 0.1
  31. input_y = -3.2
  32. result1 = input_x + input_y
  33. add_net = Add()
  34. result2 = add_net(input_x, input_y)
  35. expect = -3.1
  36. assert result1 == expect
  37. assert result2 == expect
  38. def test_tensor_add_tensor_int8():
  39. input_x = Tensor(np.ones(shape=[3])).astype(np.int8)
  40. input_y = Tensor(np.zeros(shape=[3])).astype(np.int8)
  41. result1 = input_x + input_y
  42. add_net = Add()
  43. result2 = add_net(input_x, input_y)
  44. expect = np.ones(shape=[3])
  45. assert np.all(result1.asnumpy() == expect)
  46. assert np.all(result2.asnumpy() == expect)
  47. def test_tensor_add_tensor_int16():
  48. input_x = Tensor(np.ones(shape=[3])).astype(np.int16)
  49. input_y = Tensor(np.zeros(shape=[3])).astype(np.int16)
  50. result1 = input_x + input_y
  51. add_net = Add()
  52. result2 = add_net(input_x, input_y)
  53. expect = np.ones(shape=[3])
  54. assert np.all(result1.asnumpy() == expect)
  55. assert np.all(result2.asnumpy() == expect)
  56. def test_tensor_add_tensor_int32():
  57. input_x = Tensor(np.ones(shape=[3])).astype(np.int32)
  58. input_y = Tensor(np.zeros(shape=[3])).astype(np.int32)
  59. result1 = input_x + input_y
  60. add_net = Add()
  61. result2 = add_net(input_x, input_y)
  62. expect = np.ones(shape=[3])
  63. assert np.all(result1.asnumpy() == expect)
  64. assert np.all(result2.asnumpy() == expect)
  65. def test_tensor_add_tensor_int64():
  66. input_x = Tensor(np.ones(shape=[3])).astype(np.int64)
  67. input_y = Tensor(np.zeros(shape=[3])).astype(np.int64)
  68. result1 = input_x + input_y
  69. add_net = Add()
  70. result2 = add_net(input_x, input_y)
  71. expect = np.ones(shape=[3])
  72. assert np.all(result1.asnumpy() == expect)
  73. assert np.all(result2.asnumpy() == expect)
  74. def test_tensor_add_tensor_uint8():
  75. input_x = Tensor(np.ones(shape=[3])).astype(np.uint8)
  76. input_y = Tensor(np.zeros(shape=[3])).astype(np.uint8)
  77. result1 = input_x + input_y
  78. add_net = Add()
  79. result2 = add_net(input_x, input_y)
  80. expect = np.ones(shape=[3])
  81. assert np.all(result1.asnumpy() == expect)
  82. assert np.all(result2.asnumpy() == expect)
  83. def test_tensor_add_tensor_uint16():
  84. input_x = Tensor(np.ones(shape=[3])).astype(np.uint16)
  85. input_y = Tensor(np.zeros(shape=[3])).astype(np.uint16)
  86. result1 = input_x + input_y
  87. add_net = Add()
  88. result2 = add_net(input_x, input_y)
  89. expect = np.ones(shape=[3])
  90. assert np.all(result1.asnumpy() == expect)
  91. assert np.all(result2.asnumpy() == expect)
  92. def test_tensor_add_tensor_uint32():
  93. input_x = Tensor(np.ones(shape=[3])).astype(np.uint32)
  94. input_y = Tensor(np.zeros(shape=[3])).astype(np.uint32)
  95. result1 = input_x + input_y
  96. add_net = Add()
  97. result2 = add_net(input_x, input_y)
  98. expect = np.ones(shape=[3])
  99. assert np.all(result1.asnumpy() == expect)
  100. assert np.all(result2.asnumpy() == expect)
  101. def test_tensor_add_tensor_uint64():
  102. input_x = Tensor(np.ones(shape=[3])).astype(np.uint64)
  103. input_y = Tensor(np.zeros(shape=[3])).astype(np.uint64)
  104. result1 = input_x + input_y
  105. add_net = Add()
  106. result2 = add_net(input_x, input_y)
  107. expect = np.ones(shape=[3])
  108. assert np.all(result1.asnumpy() == expect)
  109. assert np.all(result2.asnumpy() == expect)
  110. def test_tensor_add_tensor_float16():
  111. input_x = Tensor(np.ones(shape=[3])).astype(np.float16)
  112. input_y = Tensor(np.zeros(shape=[3])).astype(np.float16)
  113. result1 = input_x + input_y
  114. add_net = Add()
  115. result2 = add_net(input_x, input_y)
  116. expect = np.ones(shape=[3])
  117. assert np.all(result1.asnumpy() == expect)
  118. assert np.all(result2.asnumpy() == expect)
  119. def test_tensor_add_tensor_float32():
  120. input_x = Tensor(np.ones(shape=[3])).astype(np.float32)
  121. input_y = Tensor(np.zeros(shape=[3])).astype(np.float32)
  122. result1 = input_x + input_y
  123. add_net = Add()
  124. result2 = add_net(input_x, input_y)
  125. expect = np.ones(shape=[3])
  126. assert np.all(result1.asnumpy() == expect)
  127. assert np.all(result2.asnumpy() == expect)
  128. def test_tensor_add_tensor_float64():
  129. input_x = Tensor(np.ones(shape=[3])).astype(np.float64)
  130. input_y = Tensor(np.zeros(shape=[3])).astype(np.float64)
  131. result1 = input_x + input_y
  132. add_net = Add()
  133. result2 = add_net(input_x, input_y)
  134. expect = np.ones(shape=[3])
  135. assert np.all(result1.asnumpy() == expect)
  136. assert np.all(result2.asnumpy() == expect)
  137. def test_tensor_add_number():
  138. input_x = Tensor(np.ones(shape=[3])).astype(np.float32)
  139. input_y = -0.4
  140. result1 = input_x + input_y
  141. add_net = Add()
  142. result2 = add_net(input_x, input_y)
  143. expect = np.ones(shape=[3]) * 0.6
  144. assert np.all(result1.asnumpy() == expect.astype(np.float32))
  145. assert np.all(result2.asnumpy() == expect.astype(np.float32))
  146. def test_tuple_add_tuple():
  147. input_x = (Tensor(np.ones(shape=[3])).astype(np.float32))
  148. input_y = (Tensor(np.ones(shape=[3])).astype(np.float32) * 2)
  149. result1 = input_x + input_y
  150. add_net = Add()
  151. result2 = add_net(input_x, input_y)
  152. expect = (np.ones(shape=[3]) * 3)
  153. assert np.all(result1.asnumpy() == expect.astype(np.float32))
  154. assert np.all(result2.asnumpy() == expect.astype(np.float32))
  155. def test_tuple_add_tuple_shape():
  156. input_x = (Tensor(np.ones(shape=[3])).astype(np.float32))
  157. input_y = (Tensor(np.ones(shape=[4])).astype(np.float32) * 2)
  158. result1 = input_x + input_y
  159. add_net = Add()
  160. result2 = add_net(input_x, input_y)
  161. expect = (np.ones(shape=[3]) * 3)
  162. assert np.all(result1.asnumpy() == expect.astype(np.float32))
  163. assert np.all(result2.asnumpy() == expect.astype(np.float32))
  164. def test_string_add_string():
  165. input_x = "string111_"
  166. input_y = "add_string222"
  167. result = input_x + input_y
  168. expect = "string111_add_string222"
  169. assert result == expect
  170. def test_list_add_list():
  171. input_x = [1, 3, 5, 7, 9]
  172. input_y = ["0", "6"]
  173. result = input_x + input_y
  174. expect = [1, 3, 5, 7, 9, "0", "6"]
  175. assert result == expect
  176. class Sub(nn.Cell):
  177. def __init__(self):
  178. super(Sub, self).__init__()
  179. self.sub = P.Sub()
  180. def construct(self, x, y):
  181. z = self.sub(x, y)
  182. return z
  183. def test_number_sub_number():
  184. input_x = 10.11
  185. input_y = 902
  186. result1 = input_x - input_y
  187. sub_net = Sub()
  188. result2 = sub_net(input_x, input_y)
  189. expect = -891.89
  190. assert np.all(result1 == expect)
  191. assert np.all(result2 == expect)
  192. def test_tensor_sub_tensor():
  193. input_x = Tensor(np.array([[2, 2], [3, 3]]))
  194. input_y = Tensor(np.array([[1, 2], [-3, 3]]))
  195. result1 = input_x - input_y
  196. sub_net = Sub()
  197. result2 = sub_net(input_x, input_y)
  198. expect = Tensor(np.array([[1, 0], [6, 0]]))
  199. assert np.all(result1.asnumpy() == expect.asnumpy())
  200. assert np.all(result2.asnumpy() == expect.asnumpy())
  201. def test_tensor_sub_number():
  202. input_x = Tensor(np.array([[2, 2], [3, 3]]))
  203. input_y = -2
  204. result1 = input_x - input_y
  205. sub_net = Sub()
  206. result2 = sub_net(input_x, input_y)
  207. expect = Tensor(np.array([[4, 4], [5, 5]]))
  208. assert np.all(result1.asnumpy() == expect.asnumpy())
  209. assert np.all(result2.asnumpy() == expect.asnumpy())
  210. def test_number_sub_tensor():
  211. input_x = Tensor(np.array([[2, 2], [3, 3]]))
  212. input_y = -2
  213. result1 = input_x - input_y
  214. sub_net = Sub()
  215. result2 = sub_net(input_x, input_y)
  216. expect = Tensor(np.array([[-4, -4], [-5, -5]]))
  217. assert np.all(result1.asnumpy() == expect.asnumpy())
  218. assert np.all(result2.asnumpy() == expect.asnumpy())
  219. class Mul(nn.Cell):
  220. def __init__(self):
  221. super(Mul, self).__init__()
  222. self.mul = P.Mul()
  223. def construct(self, x, y):
  224. z = self.mul(x, y)
  225. return z
  226. def test_number_mul_number():
  227. input_x = 4.91
  228. input_y = 0.16
  229. result1 = input_x * input_y
  230. mul_net = Mul()
  231. result2 = mul_net(input_x, input_y)
  232. expect = 0.7856
  233. diff1 = result1 - expect
  234. diff2 = result2 - expect
  235. error = 1.0e-6
  236. assert np.all(diff1 < error)
  237. assert np.all(-diff1 < error)
  238. assert np.all(diff2 < error)
  239. assert np.all(-diff2 < error)
  240. def test_tensor_mul_tensor():
  241. input_x = Tensor(np.array([[2, 2], [3, 3]])).astype(np.float32)
  242. input_y = Tensor(np.array([[1, 2], [3, 1]])).astype(np.float32)
  243. result1 = input_x * input_y
  244. mul_net = Mul()
  245. result2 = mul_net(input_x, input_y)
  246. expect = Tensor(np.array([[2, 4], [9, 3]]))
  247. assert np.all(result1.asnumpy() == expect.asnumpy())
  248. assert np.all(result2.asnumpy() == expect.asnumpy())
  249. def test_tensor_mul_number():
  250. input_x = Tensor(np.array([[2, 2], [3, 3]])).astype(np.float32)
  251. input_y = -1
  252. result1 = input_x * input_y
  253. mul_net = Mul()
  254. result2 = mul_net(input_x, input_y)
  255. expect = Tensor(np.array([[-2, -2], [-3, -3]]))
  256. assert np.all(result1.asnumpy() == expect.asnumpy())
  257. assert np.all(result2.asnumpy() == expect.asnumpy())
  258. def test_number_mul_tensor():
  259. input_x = Tensor(np.array([[2, 2], [3, 3]])).astype(np.float32)
  260. input_y = -1
  261. result1 = input_x * input_y
  262. mul_net = Mul()
  263. result2 = mul_net(input_x, input_y)
  264. expect = Tensor(np.array([[-2, -2], [-3, -3]]))
  265. assert np.all(result1.asnumpy() == expect.asnumpy())
  266. assert np.all(result2.asnumpy() == expect.asnumpy())
  267. class Div(nn.Cell):
  268. def __init__(self):
  269. super(Div, self).__init__()
  270. self.div = P.Div()
  271. def construct(self, x, y):
  272. z = self.div(x, y)
  273. return z
  274. def test_number_div_number():
  275. input_x = 4
  276. input_y = -1
  277. result1 = input_x / input_y
  278. div_net = Div()
  279. result2 = div_net(input_x, input_y)
  280. expect = -4
  281. assert np.all(result1 == expect)
  282. assert np.all(result2 == expect)
  283. def test_tensor_div_tensor():
  284. input_x = Tensor(np.array([[2, 2], [3, 3]])).astype(np.float32)
  285. input_y = Tensor(np.array([[1, 2], [3, 1]])).astype(np.float32)
  286. result1 = input_x / input_y
  287. div_net = Div()
  288. result2 = div_net(input_x, input_y)
  289. expect = Tensor(np.array([[2, 1], [1, 3]]))
  290. assert np.all(result1.asnumpy() == expect.asnumpy())
  291. assert np.all(result2.asnumpy() == expect.asnumpy())
  292. def test_tensor_div_number():
  293. input_x = Tensor(np.array([[2, 2], [3, 3]])).astype(np.float32)
  294. input_y = 2
  295. result1 = input_x / input_y
  296. div_net = Div()
  297. result2 = div_net(input_x, input_y)
  298. expect = Tensor(np.array([[1, 1], [1.5, 1.5]]))
  299. assert np.all(result1.asnumpy() == expect.asnumpy())
  300. assert np.all(result2.asnumpy() == expect.asnumpy())
  301. def test_number_div_tensor():
  302. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  303. input_y = 2
  304. result1 = input_x / input_y
  305. div_net = Div()
  306. result2 = div_net(input_x, input_y)
  307. expect = Tensor(np.array([[1, 1], [0.5, 0.5]]))
  308. assert np.all(result1.asnumpy() == expect.asnumpy())
  309. assert np.all(result2.asnumpy() == expect.asnumpy())
  310. class Mod(nn.Cell):
  311. def __init__(self):
  312. super(Mod, self).__init__()
  313. self.mod = P.Mod()
  314. def construct(self, x, y):
  315. z = self.mod(x, y)
  316. return z
  317. def test_number_mod_number():
  318. input_x = 19
  319. input_y = 2
  320. result1 = input_x % input_y
  321. mod_net = Mod()
  322. result2 = mod_net(input_x, input_y)
  323. expect = 1
  324. assert np.all(result1 == expect)
  325. assert np.all(result2 == expect)
  326. def test_tensor_mod_tensor():
  327. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  328. input_y = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  329. result1 = input_x % input_y
  330. mod_net = Mod()
  331. result2 = mod_net(input_x, input_y)
  332. expect = Tensor(np.array([[0, 0], [0, 0]])).astype(np.float32)
  333. assert np.all(result1.asnumpy() == expect.asnumpy())
  334. assert np.all(result2.asnumpy() == expect.asnumpy())
  335. def test_tensor_mod_number():
  336. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  337. input_y = -1
  338. result1 = input_x % input_y
  339. mod_net = Mod()
  340. result2 = mod_net(input_x, input_y)
  341. expect = Tensor(np.array([[0, 0], [0, 0]])).astype(np.float32)
  342. assert np.all(result1.asnumpy() == expect.asnumpy())
  343. assert np.all(result2.asnumpy() == expect.asnumpy())
  344. def test_number_mod_tensor():
  345. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  346. input_y = 5
  347. result1 = input_x % input_y
  348. mod_net = Mod()
  349. result2 = mod_net(input_x, input_y)
  350. expect = Tensor(np.array([[1, 1], [1, 1]])).astype(np.float32)
  351. assert np.all(result1.asnumpy() == expect.asnumpy())
  352. assert np.all(result2.asnumpy() == expect.asnumpy())
  353. class Pow(nn.Cell):
  354. def __init__(self):
  355. super(Pow, self).__init__()
  356. self.pow = P.Pow()
  357. def construct(self, x, y):
  358. z = self.pow(x, y)
  359. return z
  360. def test_number_pow_number():
  361. input_x = 2
  362. input_y = 5
  363. result1 = input_x ** input_y
  364. pow_net = Pow()
  365. result2 = pow_net(input_x, input_y)
  366. expect = 32
  367. assert np.all(result1 == expect)
  368. assert np.all(result2 == expect)
  369. def test_tensor_pow_tensor():
  370. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  371. input_y = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  372. result1 = input_x ** input_y
  373. pow_net = Pow()
  374. result2 = pow_net(input_x, input_y)
  375. expect = Tensor(np.array([[4, 4], [256, 256]])).astype(np.float32)
  376. assert np.all(result1.asnumpy() == expect.asnumpy())
  377. assert np.all(result2.asnumpy() == expect.asnumpy())
  378. def test_tensor_pow_number():
  379. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  380. input_y = 3
  381. result1 = input_x ** input_y
  382. pow_net = Pow()
  383. result2 = pow_net(input_x, input_y)
  384. expect = Tensor(np.array([[8, 8], [64, 64]])).astype(np.float32)
  385. assert np.all(result1.asnumpy() == expect.asnumpy())
  386. assert np.all(result2.asnumpy() == expect.asnumpy())
  387. def test_number_pow_tensor():
  388. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  389. input_y = 3
  390. result1 = input_x ** input_y
  391. pow_net = Pow()
  392. result2 = pow_net(input_x, input_y)
  393. expect = Tensor(np.array([[9, 9], [81, 81]])).astype(np.float32)
  394. assert np.all(result1.asnumpy() == expect.asnumpy())
  395. assert np.all(result2.asnumpy() == expect.asnumpy())
  396. class FloorDiv(nn.Cell):
  397. def __init__(self):
  398. super(FloorDiv, self).__init__()
  399. self.floordiv = P.FloorDiv()
  400. def construct(self, x, y):
  401. z = self.floordiv(x, y)
  402. return z
  403. def test_number_floordiv_number():
  404. input_x = 2
  405. input_y = 5
  406. result1 = input_x // input_y
  407. floordiv_net = FloorDiv()
  408. result2 = floordiv_net(input_x, input_y)
  409. expect = 0
  410. assert np.all(result1 == expect)
  411. assert np.all(result2 == expect)
  412. def test_tensor_floordiv_tensor():
  413. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  414. input_y = Tensor(np.array([[1, 2], [-2, 4]])).astype(np.float32)
  415. result1 = input_x // input_y
  416. floordiv_net = FloorDiv()
  417. result2 = floordiv_net(input_x, input_y)
  418. expect = Tensor(np.array([[2, 1], [-2, 1]])).astype(np.float32)
  419. assert np.all(result1.asnumpy() == expect.asnumpy())
  420. assert np.all(result2.asnumpy() == expect.asnumpy())
  421. def test_tensor_floordiv_number():
  422. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  423. input_y = 3
  424. result1 = input_x // input_y
  425. floordiv_net = FloorDiv()
  426. result2 = floordiv_net(input_x, input_y)
  427. expect = Tensor(np.array([[0, 0], [1, 1]])).astype(np.float32)
  428. assert np.all(result1.asnumpy() == expect.asnumpy())
  429. assert np.all(result2.asnumpy() == expect.asnumpy())
  430. def test_number_floordiv_tensor():
  431. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  432. input_y = 3
  433. result1 = input_x // input_y
  434. floordiv_net = FloorDiv()
  435. result2 = floordiv_net(input_x, input_y)
  436. expect = Tensor(np.array([[1, 1], [0, 0]])).astype(np.float32)
  437. assert np.all(result1.asnumpy() == expect.asnumpy())
  438. assert np.all(result2.asnumpy() == expect.asnumpy())
  439. def test_number_floormod_number():
  440. input_x = 2
  441. input_y = 5
  442. result1 = input_x // input_y
  443. floordiv_net = FloorDiv()
  444. result2 = floordiv_net(input_x, input_y)
  445. expect = 2
  446. assert np.all(result1 == expect)
  447. assert np.all(result2 == expect)
  448. def test_tensor_floormod_tensor():
  449. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  450. input_y = Tensor(np.array([[1, 2], [-2, 4]])).astype(np.float32)
  451. result1 = input_x // input_y
  452. floordiv_net = FloorDiv()
  453. result2 = floordiv_net(input_x, input_y)
  454. expect = Tensor(np.array([[1, 0], [-2, 0]])).astype(np.float32)
  455. assert np.all(result1.asnumpy() == expect.asnumpy())
  456. assert np.all(result2.asnumpy() == expect.asnumpy())
  457. def test_tensor_floormod_number():
  458. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  459. input_y = 3
  460. result1 = input_x // input_y
  461. floordiv_net = FloorDiv()
  462. result2 = floordiv_net(input_x, input_y)
  463. expect = Tensor(np.array([[2, 2], [1, 1]])).astype(np.float32)
  464. assert np.all(result1.asnumpy() == expect.asnumpy())
  465. assert np.all(result2.asnumpy() == expect.asnumpy())
  466. def test_number_floormod_tensor():
  467. input_x = Tensor(np.array([[2, 2], [4, 4]])).astype(np.float32)
  468. input_y = 3
  469. result1 = input_x // input_y
  470. floordiv_net = FloorDiv()
  471. result2 = floordiv_net(input_x, input_y)
  472. expect = Tensor(np.array([[1, 1], [3, 3]])).astype(np.float32)
  473. assert np.all(result1.asnumpy() == expect.asnumpy())
  474. assert np.all(result2.asnumpy() == expect.asnumpy())