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_tensor_slice.py 59 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336
  1. # Copyright 2020 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_tensor_slice """
  16. import numpy as np
  17. import pytest
  18. from mindspore import Tensor, Parameter
  19. from mindspore import context
  20. from mindspore import dtype as mstype
  21. from mindspore.nn import Cell
  22. from ....mindspore_test_framework.mindspore_test import mindspore_test
  23. from ....mindspore_test_framework.pipeline.forward.compile_forward \
  24. import pipeline_for_compile_forward_ge_graph_for_case_by_case_config, \
  25. pipeline_for_compile_forward_ge_graph_for_case_by_case_config_exception
  26. class NetWorkSlicePositive(Cell):
  27. def __init__(self):
  28. super(NetWorkSlicePositive, self).__init__()
  29. self.tensor_ret0 = Tensor(np.ones([1, 2, 2], np.int32))
  30. self.tensor_ret1 = Tensor(np.ones([4, 7, 4], np.int32))
  31. self.tensor_ret2 = Tensor(np.ones([6, 8, 10], np.int32))
  32. self.tensor_ret3 = Tensor(np.ones([3, 8, 10], np.int32))
  33. def construct(self, tensor):
  34. ret0 = tensor[3:4:3, 1:5:2, 3:6:2] + self.tensor_ret0
  35. ret1 = tensor[-6:4:1, 7:-8:-1, ::3] + self.tensor_ret1
  36. ret2 = tensor[::, ::, ::] + self.tensor_ret2
  37. ret3 = tensor[::2] + self.tensor_ret3
  38. return ret0, ret1, ret2, ret3
  39. class NetWorkSliceEllipsis(Cell):
  40. def __init__(self):
  41. super(NetWorkSliceEllipsis, self).__init__()
  42. self.tensor_ret0 = Tensor(np.ones([2, 7, 8], np.int32))
  43. self.tensor_ret1 = Tensor(np.ones([6, 7, 8, 9], np.int32))
  44. self.tensor_ret2 = Tensor(np.ones([1, 6, 7, 8, 9], np.int32))
  45. def construct(self, tensor):
  46. ret0 = tensor[0:4:2, ..., 1] + self.tensor_ret0
  47. ret1 = tensor[...] + self.tensor_ret1
  48. ret2 = tensor[None] + self.tensor_ret2
  49. ret3 = tensor[True] + self.tensor_ret2
  50. return ret0, ret1, ret2, ret3
  51. class NetWorkReduceDimension(Cell):
  52. def __init__(self):
  53. super(NetWorkReduceDimension, self).__init__()
  54. self.tensor_ret0 = Tensor(np.ones([2, 4, 1], np.int32))
  55. self.tensor_ret1 = Tensor(np.ones([3, 4], np.int32))
  56. self.tensor_ret2 = Tensor(np.ones([6, 8], np.int32))
  57. self.tensor_ret3 = Tensor(np.array(8, np.int32))
  58. self.tensor_ret4 = Tensor(np.ones([8, 10], np.int32))
  59. def construct(self, tensor):
  60. ret0 = tensor[0:6:3, 1:5:1, 3:5:2] + self.tensor_ret0
  61. ret1 = tensor[::2, 1, ::3] + self.tensor_ret1
  62. ret2 = tensor[::, ::, 0] + self.tensor_ret2
  63. ret3 = tensor[3, 2, 5] + self.tensor_ret3
  64. ret4 = tensor[1] + self.tensor_ret4
  65. return ret0, ret1, ret2, ret3, ret4
  66. class NetWorkStepNegative(Cell):
  67. def __init__(self):
  68. super(NetWorkStepNegative, self).__init__()
  69. self.tensor_ret = Tensor(np.ones([6, 5, 10], np.int32))
  70. def construct(self, tensor):
  71. ret = tensor[::1, -5::, ::-1] + self.tensor_ret
  72. return ret
  73. class NetWorkReduceToScalar(Cell):
  74. def __init__(self):
  75. super(NetWorkReduceToScalar, self).__init__()
  76. self.tensor_ret = Tensor(np.array(9, np.int32))
  77. def construct(self, tensor):
  78. ret = tensor[2, 3, 4] + self.tensor_ret
  79. return ret
  80. class TensorAssignWithSliceError1(Cell):
  81. def __init__(self):
  82. super(TensorAssignWithSliceError1, self).__init__()
  83. def construct(self, a, b):
  84. a[1:3:-1, ::] = b
  85. return a
  86. class TensorAssignWithSliceError2(Cell):
  87. def __init__(self):
  88. super(TensorAssignWithSliceError2, self).__init__()
  89. def construct(self, a, b):
  90. a[1:3:-1] = b
  91. return a
  92. class TensorAssignWithSlice2(Cell):
  93. def __init__(self):
  94. super(TensorAssignWithSlice2, self).__init__()
  95. def construct(self, a, b, ck):
  96. a[1:5] = b
  97. a[3:4] = 5
  98. a[-1:1:-1] = b
  99. a[-1:3:-1] = 5
  100. a[::] = b
  101. a[::] = 9
  102. z = a + ck
  103. return z
  104. class TensorAssignWithSlice(Cell):
  105. def __init__(self):
  106. super(TensorAssignWithSlice, self).__init__()
  107. self.c = 2.0
  108. def construct(self, a, b, ck):
  109. a[1:3, ::] = b
  110. a[2:3:, 3:] = b
  111. a[::] = b
  112. a[::] = self.c
  113. a[::, ::] = b
  114. a[::, ::] = self.c
  115. a[2:3:, 0:, 4:1:-1] = b
  116. a[2:3:, 0:, 4:1:-1] = self.c
  117. z = a + ck
  118. return z
  119. class TensorGetItemByOneTensor(Cell):
  120. def __init__(self):
  121. super(TensorGetItemByOneTensor, self).__init__()
  122. self.const = Tensor(np.ones((5, 4, 7, 8)), mstype.int32)
  123. def construct(self, x, index):
  124. ret = x[index] + self.const
  125. return ret
  126. class TensorGetItemByTwoTensors(Cell):
  127. def __init__(self):
  128. super(TensorGetItemByTwoTensors, self).__init__()
  129. self.const = Tensor(np.ones((3, 4, 5, 8)), mstype.int32)
  130. def construct(self, x, index_0, index_1):
  131. ret = x[index_0, index_1] + self.const
  132. return ret
  133. class TensorGetItemByThreeTensors(Cell):
  134. def __init__(self):
  135. super(TensorGetItemByThreeTensors, self).__init__()
  136. self.const = Tensor(np.ones((5, 3, 4, 5)), mstype.int32)
  137. def construct(self, x, index_0, index_1, index_2):
  138. ret = x[index_0, index_1, index_2] + self.const
  139. return ret
  140. class TensorGetItemByMixedTensors_0(Cell):
  141. def __init__(self):
  142. super(TensorGetItemByMixedTensors_0, self).__init__()
  143. self.const = Tensor(np.ones((3, 4, 5, 3, 6, 5), np.float32))
  144. def construct(self, tensor, index_0, index_1):
  145. ret = tensor[index_0, index_1, 0:3, ..., 0:5, 3] + self.const
  146. return ret
  147. class TensorGetItemByMixedTensors_1(Cell):
  148. def __init__(self):
  149. super(TensorGetItemByMixedTensors_1, self).__init__()
  150. self.const = Tensor(np.ones((3, 4, 5, 3, 5, 5), np.float32))
  151. def construct(self, tensor, index_0, index_1):
  152. ret = tensor[0:3, index_0, ..., index_1, 3, 0:5] + self.const
  153. return ret
  154. class TensorGetItemByMixedTensors_2(Cell):
  155. def __init__(self):
  156. super(TensorGetItemByMixedTensors_2, self).__init__()
  157. self.const = Tensor(np.ones((3, 4, 5, 6, 7), np.float32))
  158. def construct(self, tensor, index_0, index_1):
  159. ret = tensor[0, index_0, index_1, ..., 3] + self.const
  160. return ret
  161. class TensorGetItemByMixedTensors_3(Cell):
  162. def __init__(self):
  163. super(TensorGetItemByMixedTensors_3, self).__init__()
  164. self.const = Tensor(np.ones((3, 4, 5, 3, 4, 3, 5), np.float32))
  165. def construct(self, tensor, index_0, index_1):
  166. ret = tensor[..., index_0, 0:3, index_1, 0:5] + self.const
  167. return ret
  168. class TensorGetItemByMixedTensors_4(Cell):
  169. def __init__(self):
  170. super(TensorGetItemByMixedTensors_4, self).__init__()
  171. self.const = Tensor(np.ones((2, 2, 3, 4, 5, 3, 9), np.float32))
  172. def construct(self, tensor, index_0, index_1, index_2):
  173. ret = tensor[0:2, index_0, index_1, 2, index_2, 0:3, ...] + self.const
  174. return ret
  175. class TensorGetItemByMixedTensors_5(Cell):
  176. def __init__(self):
  177. super(TensorGetItemByMixedTensors_5, self).__init__()
  178. self.const = Tensor(np.ones((2, 3, 4, 5, 2, 6), np.float32))
  179. def construct(self, tensor, index_0, index_1, index_2):
  180. ret = tensor[0:2, index_0, index_1, ..., index_2, 2] + self.const
  181. return ret
  182. class TensorGetItemByMixedTensors_6(Cell):
  183. def __init__(self):
  184. super(TensorGetItemByMixedTensors_6, self).__init__()
  185. self.const = Tensor(np.ones((3, 4, 2, 3, 4, 5), np.float32))
  186. def construct(self, tensor, index_0, index_1, index_2):
  187. ret = tensor[..., index_0, index_1, index_2, 3] + self.const
  188. return ret
  189. class TensorSetItemByMixedTensors_0(Cell):
  190. def __init__(self, value):
  191. super(TensorSetItemByMixedTensors_0, self).__init__()
  192. self.const = Tensor(np.ones((3, 4, 5, 6, 7, 8, 9), np.float32))
  193. self.param = Parameter(Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8 * 9).reshape((3, 4, 5, 6, 7, 8, 9)),
  194. mstype.float32),
  195. name="x")
  196. self.value = value
  197. def construct(self, index_0, index_1, index_2):
  198. self.param[0:2, index_0, index_1, 2, index_2, 0:3, ...] = self.value
  199. ret = self.param + self.const
  200. return ret
  201. class TensorSetItemByMixedTensors_1(Cell):
  202. def __init__(self, value):
  203. super(TensorSetItemByMixedTensors_1, self).__init__()
  204. self.const = Tensor(np.ones((3, 4, 5, 6, 7, 8), np.float32))
  205. self.param = Parameter(Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  206. name="x")
  207. self.value = value
  208. def construct(self, index_0, index_1, index_2):
  209. self.param[0:2, index_0, index_1, ..., index_2, 2] = self.value
  210. ret = self.param + self.const
  211. return ret
  212. class TensorSetItemByMixedTensors_2(Cell):
  213. def __init__(self, value):
  214. super(TensorSetItemByMixedTensors_2, self).__init__()
  215. self.const = Tensor(np.ones((3, 4, 5, 6, 7, 8), np.float16))
  216. self.param = Parameter(Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float16),
  217. name="x")
  218. self.value = value
  219. def construct(self, index_0, index_1, index_2):
  220. self.param[..., index_0, index_1, index_2, 3] = self.value
  221. ret = self.param + self.const
  222. return ret
  223. class TensorGetItemByMixedTensorsTypeError(Cell):
  224. def __init__(self):
  225. super(TensorGetItemByMixedTensorsTypeError, self).__init__()
  226. def construct(self, x, index_0, index_1):
  227. ret = x[index_0, index_1, 0:3, ..., 0:5, [1, 2, 3, 4]]
  228. return ret
  229. class TensorGetItemByMixedTensorsNumberError(Cell):
  230. def __init__(self):
  231. super(TensorGetItemByMixedTensorsNumberError, self).__init__()
  232. def construct(self, x, index_0, index_1):
  233. ret = x[index_0, index_1, 0:3, ..., index_1, index_0]
  234. return ret
  235. class TensorSetItemByOneTensorWithNumber(Cell):
  236. def __init__(self, value):
  237. super(TensorSetItemByOneTensorWithNumber, self).__init__()
  238. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  239. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  240. self.value = value
  241. def construct(self, index):
  242. self.param[index] = self.value
  243. ret = self.param + self.const
  244. return ret
  245. class TensorSetItemByOneTensorWithTensor(Cell):
  246. def __init__(self):
  247. super(TensorSetItemByOneTensorWithTensor, self).__init__()
  248. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  249. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  250. def construct(self, index, value):
  251. self.param[index] = value
  252. ret = self.param + self.const
  253. return ret
  254. class TensorSetItemByOneTensorWithTupleOfNumber(Cell):
  255. def __init__(self, value):
  256. super(TensorSetItemByOneTensorWithTupleOfNumber, self).__init__()
  257. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  258. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  259. self.value = value
  260. def construct(self, index):
  261. self.param[index] = self.value
  262. ret = self.param + self.const
  263. return ret
  264. class TensorSetItemByOneTensorWithTupleOfTensor(Cell):
  265. def __init__(self):
  266. super(TensorSetItemByOneTensorWithTupleOfTensor, self).__init__()
  267. self.const = Tensor(np.ones((6, 3, 8)), mstype.float32)
  268. self.param = Parameter(Tensor(np.arange(6 * 3 * 8).reshape((6, 3, 8)), mstype.float32), name="x")
  269. def construct(self, index, value_0, value_1, value_2):
  270. self.param[index] = (value_0, value_1, value_2)
  271. ret = self.param + self.const
  272. return ret
  273. class TensorSetItemByTensorsWithNumber(Cell):
  274. def __init__(self, value):
  275. super(TensorSetItemByTensorsWithNumber, self).__init__()
  276. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  277. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  278. self.value = value
  279. def construct(self, index_0, index_1, index_2):
  280. self.param[index_0, index_1, index_2] = self.value
  281. ret = self.param + self.const
  282. return ret
  283. class TensorSetItemByTensorsWithTensor(Cell):
  284. def __init__(self):
  285. super(TensorSetItemByTensorsWithTensor, self).__init__()
  286. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  287. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  288. def construct(self, index_0, index_1, index_2, value):
  289. self.param[index_0, index_1, index_2] = value
  290. ret = self.param + self.const
  291. return ret
  292. class TensorSetItemByTensorsWithTensorNumberError(Cell):
  293. def __init__(self):
  294. super(TensorSetItemByTensorsWithTensorNumberError, self).__init__()
  295. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  296. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  297. def construct(self, index_0, index_1, index_2, index_3, value):
  298. self.param[index_0, index_1, index_2, index_3] = value
  299. ret = self.param + self.const
  300. return ret
  301. class TensorSetItemByTensorsWithTupleOfNumber(Cell):
  302. def __init__(self, value):
  303. super(TensorSetItemByTensorsWithTupleOfNumber, self).__init__()
  304. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  305. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  306. self.value = value
  307. def construct(self, index_0, index_1, index_2):
  308. self.param[index_0, index_1, index_2] = self.value
  309. ret = self.param + self.const
  310. return ret
  311. class TensorSetItemByTensorsWithTupleOfTensor(Cell):
  312. def __init__(self):
  313. super(TensorSetItemByTensorsWithTupleOfTensor, self).__init__()
  314. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  315. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  316. def construct(self, index_0, index_1, index_2, value_0, value_1, value_2):
  317. self.param[index_0, index_1, index_2] = (value_0, value_1, value_2)
  318. ret = self.param + self.const
  319. return ret
  320. class TensorSetItemByTensorsWithTupleOfTensorNumberError(Cell):
  321. def __init__(self):
  322. super(TensorSetItemByTensorsWithTupleOfTensorNumberError, self).__init__()
  323. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  324. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  325. def construct(self, index_0, index_1, index_2, value_0, value_1):
  326. self.param[index_0, index_1, index_2] = (value_0, value_1)
  327. ret = self.param + self.const
  328. return ret
  329. class TensorSetItemByMixedTensors(Cell):
  330. def __init__(self):
  331. super(TensorSetItemByMixedTensors, self).__init__()
  332. self.const = Tensor(np.ones((6, 7, 8)), mstype.float32)
  333. self.param = Parameter(Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.float32), name="x")
  334. self.value = 99.0
  335. def construct(self, index_0, index_1):
  336. self.param[index_0, index_1, 0:6] = self.value
  337. ret = self.param + self.const
  338. return ret
  339. def test_tensor_assign():
  340. context.set_context(mode=context.GRAPH_MODE)
  341. net = TensorAssignWithSlice()
  342. net2 = TensorAssignWithSlice2()
  343. # The test case is no longer appropriate since x[1:3:-1] = np.array(2) does
  344. # not incur an error in numpy, which leaves the original array unchanged after
  345. # the assign operation.
  346. # net_e1 = TensorAssignWithSliceError1()
  347. # net_e2 = TensorAssignWithSliceError2()
  348. a = np.arange(60).reshape(3, 4, 5)
  349. ck = np.arange(60).reshape(3, 4, 5)
  350. b = Tensor([1], dtype=mstype.float32)
  351. Ta = Tensor(a, dtype=mstype.float32)
  352. Tck = Tensor(ck, dtype=mstype.float32)
  353. Ta4d = Tensor(a.reshape(1, 3, 4, 5), dtype=mstype.float32)
  354. Ta4d_ck = Tensor(ck.reshape(1, 3, 4, 5), dtype=mstype.float32)
  355. Tb = Tensor([1, 3], dtype=mstype.float32)
  356. Tc = Tensor([], dtype=mstype.float32)
  357. t = Tensor([1, 2, 3, 4, 5, 6, 7, 8], dtype=mstype.float32)
  358. tck = Tensor([1, 2, 3, 4, 5, 6, 7, 8], dtype=mstype.float32)
  359. net(Ta, b, Tck)
  360. net2(t, b, tck)
  361. # Error for A[Slice] = Number
  362. # 1. A[Slice] = Number, 0 in shape
  363. # with pytest.raises(ValueError):
  364. # net_e2(t, Tensor(2, mstype.int32))
  365. # Error for A[Slice] = U, U is a Tensor
  366. # 1. A[Slice] = U, u.size is error
  367. with pytest.raises(ValueError):
  368. net2(t, Tb, tck)
  369. # 2. A[Slice] = U, U is empty
  370. with pytest.raises(ValueError):
  371. net2(t, Tc, tck)
  372. # 3. A[Slice] = U, U.size error
  373. with pytest.raises(ValueError):
  374. net2(t, Tb, tck)
  375. # Error for A[Tuple(Slice...)] = Tensor
  376. # 1. A[Tuple(Slice...)] = U, U is empty
  377. with pytest.raises(ValueError):
  378. net(Ta, Tc, Tck)
  379. # 2. A[Tuple(Slice...)] = U, U.size error
  380. with pytest.raises(ValueError):
  381. net(Ta, Tb, Tck)
  382. # 3. A[Tuple(Slice...)] = U, Slice error
  383. # with pytest.raises(IndexError):
  384. # net_e1(Ta, b)
  385. # Error for A[Tuple(Slice...)] = Number
  386. # 1. A[Tuple(Slice...)] = Number, Slice error
  387. # with pytest.raises(IndexError):
  388. # net_e1(Ta, Tensor(2, mstype.int32))
  389. net = TensorAssignWithInteger()
  390. # Error for A[Number] = scalar/Tensor
  391. # 1. A[Number] = U, U is a Tensor, u.size not match
  392. with pytest.raises(ValueError):
  393. net(Ta, Tb, Tck)
  394. with pytest.raises(ValueError):
  395. net(Ta, Tc, Tck)
  396. # 2. A[Number] = U, the number index error
  397. with pytest.raises(IndexError):
  398. net(Ta4d, b, Ta4d_ck)
  399. # Error for A[(n,m)] = scalar/Tensor
  400. # 1. A[(n,m)] = U, U is a tensor. u.size not match
  401. net = TensorAssignWithTupleInteger()
  402. with pytest.raises(ValueError):
  403. net(Ta, Tc, Tck)
  404. with pytest.raises(ValueError):
  405. net(Ta, Tb, Tck)
  406. # 2. A[(n,m)] = U, the number index error
  407. with pytest.raises(IndexError):
  408. net(Ta4d, b, Ta4d_ck)
  409. # Error for A[...] = U or A[1:, ...] = u
  410. # 1. A[...] = scalar/tensor
  411. net = TensorAssignWithEllipsis()
  412. net(Ta, Ta4d)
  413. with pytest.raises(ValueError):
  414. net(Ta, Tc)
  415. with pytest.raises(ValueError):
  416. net(Ta, Tb)
  417. # 2. A[::, 1:, ...] = scalar/tensor
  418. net = TensorAssignWithTupleEllipsis()
  419. net(Ta, b)
  420. Tc = Tensor(1, mstype.float32)
  421. net(Ta, Tc)
  422. with pytest.raises(ValueError):
  423. net(Ta, Tb)
  424. class TensorAssignWithTupleEllipsis2(Cell):
  425. def __init__(self):
  426. super(TensorAssignWithTupleEllipsis2, self).__init__()
  427. def construct(self, a, b):
  428. a[1:, ..., ::] = b
  429. return a
  430. class TensorAssignWithTupleEllipsis(Cell):
  431. def __init__(self):
  432. super(TensorAssignWithTupleEllipsis, self).__init__()
  433. def construct(self, a, b):
  434. a[:2, ...] = 1.0
  435. a[1:, ...] = b
  436. return a
  437. class TensorAssignWithEllipsis(Cell):
  438. def __init__(self):
  439. super(TensorAssignWithEllipsis, self).__init__()
  440. def construct(self, a, b):
  441. a[...] = 1
  442. a[...] = b
  443. return a
  444. class TensorAssignWithInteger(Cell):
  445. def __init__(self):
  446. super(TensorAssignWithInteger, self).__init__()
  447. def construct(self, a, b, ck):
  448. a[1] = 1
  449. a[0] = b
  450. z = a + ck
  451. return z
  452. class TensorAssignWithTupleInteger(Cell):
  453. def __init__(self):
  454. super(TensorAssignWithTupleInteger, self).__init__()
  455. def construct(self, a, b, ck):
  456. a[(1)] = 1.0
  457. a[(1)] = b
  458. a[(1, 1)] = b
  459. a[(1, 1)] = 1.0
  460. z = a + ck
  461. return z
  462. class TensorAssignWithBoolTensorIndex(Cell):
  463. def __init__(self):
  464. super(TensorAssignWithBoolTensorIndex, self).__init__()
  465. self.t = Tensor(np.arange(60).reshape([3, 4, 5]), dtype=mstype.float32)
  466. self.u_scalar = 5
  467. def construct(self, a, b, c, u_tensor):
  468. a[c] = self.u_scalar
  469. a[b] = u_tensor
  470. z = a + self.t
  471. return z
  472. class TensorAssignWithBoolTensorIndexError(Cell):
  473. def __init__(self):
  474. super(TensorAssignWithBoolTensorIndexError, self).__init__()
  475. def construct(self, a, b, c, u_tensor):
  476. a[b][c] = u_tensor
  477. return a
  478. class TensorAssignWithBoolTensorIndex2(Cell):
  479. def __init__(self):
  480. super(TensorAssignWithBoolTensorIndex2, self).__init__()
  481. self.t = Tensor(np.arange(6).reshape([2, 3]), dtype=mstype.float32)
  482. self.t = Tensor(np.arange(60).reshape([3, 4, 5]), dtype=mstype.float32)
  483. self.u_scalar = 5
  484. def construct(self, a, u_tensor):
  485. a[a > 8] = u_tensor
  486. a[a >= 6] = self.u_scalar
  487. a[a < 3] = self.u_scalar
  488. a[a <= 5] = u_tensor
  489. a[a == 5] = self.u_scalar
  490. z = a + self.t
  491. return z
  492. class TensorAssignWithBoolTensorIndex2Error(Cell):
  493. def __init__(self):
  494. super(TensorAssignWithBoolTensorIndex2Error, self).__init__()
  495. def construct(self, a, u_tensor):
  496. a[a > 8][a > 5] = u_tensor
  497. return a
  498. class TensorItemSetWithNumber(Cell):
  499. def construct(self, tensor, number_value):
  500. ret = tensor.itemset(number_value)
  501. return ret
  502. class TensorItemSetByItemWithNumber(Cell):
  503. def construct(self, tensor, index, number_value):
  504. ret = tensor.itemset(index, number_value)
  505. return ret
  506. input_1d_np = np.ndarray([1]).astype(np.float32)
  507. input_1d_ms = Tensor(input_1d_np, mstype.float32)
  508. input_3d_np = np.random.randint(3, size=(3, 4, 5)).astype(np.int32)
  509. input_3d_ms = Tensor(input_3d_np, mstype.float32)
  510. index_np_1, index_np_2, index_np_3, index_np_4 = 0, 30, 60, 2.0
  511. tuple_index_np_1, tuple_index_np_2, tuple_index_np_3, tuple_index_np_4, tuple_index_np_5 = \
  512. (0,), (1, 2), (1, 2, 3), (3, 4, 4), (1, 2, 3, 4)
  513. value_np_1, value_np_2 = 1, 2.0
  514. a = np.arange(60).reshape(3, 4, 5)
  515. ck = np.arange(60).reshape(3, 4, 5)
  516. a4 = np.arange(60).reshape(3, 2, 2, 5)
  517. b = a > 5
  518. c = a < 3
  519. Ta = Tensor(a, dtype=mstype.float32)
  520. Tck = Tensor(ck, dtype=mstype.float32)
  521. Ta4 = Tensor(a4, dtype=mstype.float32)
  522. Tb = Tensor(b)
  523. Tc = Tensor(c)
  524. Td = Tensor([True, True])
  525. u_tensor = Tensor([1], dtype=mstype.float32)
  526. u_tensor_error = Tensor([1, 2], dtype=mstype.float32)
  527. t_1d = Tensor([1, 2, 3, 4, 5, 6, 7, 8], dtype=mstype.float32)
  528. tck_1d = Tensor([1, 2, 3, 4, 5, 6, 7, 8], dtype=mstype.float32)
  529. u_scalar = 5
  530. def test_tensor_assign_bool_index():
  531. net1 = TensorAssignWithBoolTensorIndex()
  532. net2 = TensorAssignWithBoolTensorIndex2()
  533. net1(Ta, Tb, Tc, u_tensor)
  534. net1(Ta, Tb, Tc, u_tensor)
  535. with pytest.raises(ValueError):
  536. net1(Ta, Td, Tc, u_tensor)
  537. with pytest.raises(IndexError):
  538. net1(Ta, u_tensor, Tc, u_tensor)
  539. with pytest.raises(ValueError):
  540. net1(Ta, Tb, Td, u_tensor)
  541. with pytest.raises(IndexError):
  542. net1(Ta, Tb, Ta, u_tensor)
  543. with pytest.raises(ValueError):
  544. net1(Ta, Tb, Tc, u_tensor_error)
  545. # net1(Ta, u_tensor, Tc, u_tensor_error, u_scalar)
  546. with pytest.raises(ValueError):
  547. net2(Ta, u_tensor_error)
  548. net3 = TensorAssignWithBoolTensorIndexError()
  549. with pytest.raises(IndexError):
  550. net3(Ta, Tb, Tc, u_tensor)
  551. with pytest.raises(IndexError):
  552. net3(Ta, Tb, Tc, Tensor(u_scalar, mstype.int32))
  553. net4 = TensorAssignWithBoolTensorIndex2Error()
  554. with pytest.raises(IndexError):
  555. net4(Ta, u_tensor)
  556. with pytest.raises(IndexError):
  557. net4(Ta, Tensor(u_scalar, mstype.int32))
  558. test_cases = [
  559. ('TensorAssignWithTupleEllipsis2', {
  560. 'block': TensorAssignWithTupleEllipsis2(),
  561. 'desc_inputs': [Ta4, u_tensor],
  562. }),
  563. ('TensorAssignWithTupleEllipsis', {
  564. 'block': TensorAssignWithTupleEllipsis(),
  565. 'desc_inputs': [Ta, u_tensor],
  566. }),
  567. ('TensorAssignWithEllipsis', {
  568. 'block': TensorAssignWithEllipsis(),
  569. 'desc_inputs': [Ta, u_tensor],
  570. }),
  571. ('TensorAssignWithTupleInteger', {
  572. 'block': TensorAssignWithTupleInteger(),
  573. 'desc_inputs': [Ta, u_tensor, Tck],
  574. }),
  575. ('TensorAssignWithInteger', {
  576. 'block': TensorAssignWithInteger(),
  577. 'desc_inputs': [Ta, u_tensor, Tck],
  578. }),
  579. ('TensorAssignWithSlice', {
  580. 'block': TensorAssignWithSlice(),
  581. 'desc_inputs': [Ta, u_tensor, Tck],
  582. }),
  583. ('TensorAssignWithSlice2', {
  584. 'block': TensorAssignWithSlice2(),
  585. 'desc_inputs': [t_1d, u_tensor, tck_1d],
  586. }),
  587. ('TensorAssignWithBoolTensorIndex', {
  588. 'block': TensorAssignWithBoolTensorIndex(),
  589. 'desc_inputs': [Ta, Tb, Tc, u_tensor],
  590. }),
  591. ('TensorAssignWithBoolTensorIndex2', {
  592. 'block': TensorAssignWithBoolTensorIndex2(),
  593. 'desc_inputs': [Ta, u_tensor],
  594. }),
  595. ('SlicePositive', {
  596. 'block': NetWorkSlicePositive(),
  597. 'desc_inputs': [Tensor(np.ones([6, 8, 10], np.int32))],
  598. }),
  599. ('SliceReduceDimension', {
  600. 'block': NetWorkReduceDimension(),
  601. 'desc_inputs': [Tensor(np.ones([6, 8, 10], np.int32))],
  602. }),
  603. ('SliceNegative', {
  604. 'block': NetWorkStepNegative(),
  605. 'desc_inputs': [Tensor(np.ones([6, 8, 10], np.int32))],
  606. }),
  607. ('SliceReduceToScalar', {
  608. 'block': NetWorkReduceToScalar(),
  609. 'desc_inputs': [Tensor(np.ones([6, 8, 10], np.int32))],
  610. }),
  611. ('TensorSliceEllipsis', {
  612. 'block': NetWorkSliceEllipsis(),
  613. 'desc_inputs': [Tensor(np.ones([6, 7, 8, 9], np.int32))],
  614. }),
  615. ('TensorGetItemByOneTensor', {
  616. 'block': TensorGetItemByOneTensor(),
  617. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  618. Tensor(np.random.randint(6, size=(5, 4)), mstype.int32)],
  619. }),
  620. ('TensorGetItemByTwoTensors', {
  621. 'block': TensorGetItemByTwoTensors(),
  622. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  623. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  624. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32)],
  625. }),
  626. ('TensorGetItemByThreeTensors', {
  627. 'block': TensorGetItemByThreeTensors(),
  628. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  629. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  630. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  631. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  632. }),
  633. ('TensorGetItemByMixedTensors_0', {
  634. 'block': TensorGetItemByMixedTensors_0(),
  635. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  636. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  637. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32)],
  638. }),
  639. ('TensorGetItemByMixedTensors_1', {
  640. 'block': TensorGetItemByMixedTensors_1(),
  641. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  642. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  643. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32)],
  644. }),
  645. ('TensorGetItemByMixedTensors_2', {
  646. 'block': TensorGetItemByMixedTensors_2(),
  647. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  648. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  649. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32)],
  650. }),
  651. ('TensorGetItemByMixedTensors_3', {
  652. 'block': TensorGetItemByMixedTensors_3(),
  653. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  654. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  655. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32)],
  656. }),
  657. ('TensorGetItemByMixedTensors_4', {
  658. 'block': TensorGetItemByMixedTensors_4(),
  659. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8 * 9).reshape((3, 4, 5, 6, 7, 8, 9)), mstype.float32),
  660. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  661. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  662. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  663. }),
  664. ('TensorGetItemByMixedTensors_5', {
  665. 'block': TensorGetItemByMixedTensors_5(),
  666. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  667. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  668. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  669. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  670. }),
  671. ('TensorGetItemByMixedTensors_6', {
  672. 'block': TensorGetItemByMixedTensors_6(),
  673. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8).reshape((3, 4, 5, 6, 7, 8)), mstype.float32),
  674. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  675. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  676. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  677. }),
  678. ('TensorSetItemByOneTensorWithNumber', {
  679. 'block': TensorSetItemByOneTensorWithNumber(value=0.0),
  680. 'desc_inputs': [Tensor(np.random.randint(4, size=(5, 4)), mstype.int32)],
  681. }),
  682. ('TensorSetItemByOneTensorWithTensor', {
  683. 'block': TensorSetItemByOneTensorWithTensor(),
  684. 'desc_inputs': [Tensor(np.random.randint(3, size=(5, 4)), mstype.int32),
  685. Tensor(np.zeros((4, 7, 8)), mstype.float32)],
  686. }),
  687. ('TensorSetItemByOneTensorWithTupleOfNumber', {
  688. 'block': TensorSetItemByOneTensorWithTupleOfNumber(value=(0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7)),
  689. 'desc_inputs': [Tensor(np.random.randint(5, size=(5, 4)), mstype.int32)],
  690. }),
  691. ('TensorSetItemByOneTensorWithTupleOfTensor', {
  692. 'block': TensorSetItemByOneTensorWithTupleOfTensor(),
  693. 'desc_inputs': [Tensor(np.random.randint(6, size=(5, 4)), mstype.int32),
  694. Tensor(np.zeros((8,), np.float32)),
  695. Tensor(np.ones((8,), np.float32)),
  696. Tensor(np.ones((8,), np.float32) * 2)],
  697. }),
  698. ('TensorSetItemByTensorsWithNumber', {
  699. 'block': TensorSetItemByTensorsWithNumber(value=0.0),
  700. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  701. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  702. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  703. }),
  704. ('TensorSetItemByTensorsWithTensor', {
  705. 'block': TensorSetItemByTensorsWithTensor(),
  706. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  707. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  708. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  709. Tensor(np.zeros((4, 5)), mstype.float32)],
  710. }),
  711. ('TensorSetItemByTensorsWithTupleOfNumber', {
  712. 'block': TensorSetItemByTensorsWithTupleOfNumber(value=(0.0, 1.1, 2.2, 3.3, 4.4)),
  713. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  714. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  715. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  716. }),
  717. ('TensorSetItemByTensorsWithTupleOfTensor', {
  718. 'block': TensorSetItemByTensorsWithTupleOfTensor(),
  719. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  720. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  721. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  722. Tensor(np.zeros((4, 5)), mstype.float32),
  723. Tensor(np.ones((4, 5)), mstype.float32),
  724. Tensor(np.ones((4, 5)) * 2, mstype.float32)],
  725. }),
  726. ('TensorSetItemByMixedTensorsWithNumber_0', {
  727. 'block': TensorSetItemByMixedTensors_0(value=88.0),
  728. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  729. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  730. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  731. }),
  732. ('TensorSetItemByMixedTensorsWithTensor_0', {
  733. 'block': TensorSetItemByMixedTensors_0(value=Tensor(np.ones((4, 5, 3, 9), np.float32))),
  734. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  735. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  736. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  737. }),
  738. ('TensorGetItemByMixedTensorsWithTupleOfNumber_0', {
  739. 'block': TensorSetItemByMixedTensors_0(value=(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)),
  740. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  741. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  742. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  743. }),
  744. ('TensorGetItemByMixedTensorsWithTupleOfTensor_0', {
  745. 'block': TensorSetItemByMixedTensors_0(value=(Tensor(np.ones((4, 5, 3, 9), np.float32)),
  746. Tensor(np.zeros((4, 5, 3, 9), np.float32)),
  747. Tensor(np.ones((4, 5, 3, 9), np.float32)))),
  748. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  749. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  750. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  751. }),
  752. ('TensorSetItemByMixedTensorsWithNumber_1', {
  753. 'block': TensorSetItemByMixedTensors_1(value=88.0),
  754. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  755. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  756. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  757. }),
  758. ('TensorSetItemByMixedTensorsWithTensor_1', {
  759. 'block': TensorSetItemByMixedTensors_1(value=Tensor(np.ones((5, 2, 6), np.float32))),
  760. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  761. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  762. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  763. }),
  764. ('TensorGetItemByMixedTensorsWithTupleOfNumber_1', {
  765. 'block': TensorSetItemByMixedTensors_1(value=(1.0, 2.0, 3.0, 4.0, 5.0, 6.0)),
  766. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  767. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  768. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  769. }),
  770. ('TensorGetItemByMixedTensorsWithTupleOfTensor_1', {
  771. 'block': TensorSetItemByMixedTensors_1(value=(Tensor(np.ones((5, 2, 6), np.float32)),
  772. Tensor(np.zeros((5, 2, 6), np.float32)),
  773. Tensor(np.ones((5, 2, 6), np.float32)),
  774. Tensor(np.ones((5, 2, 6), np.float32)))),
  775. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  776. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  777. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  778. }),
  779. ('TensorSetItemByMixedTensorsWithNumber_2', {
  780. 'block': TensorSetItemByMixedTensors_2(value=88.0),
  781. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  782. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  783. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  784. }),
  785. ('TensorSetItemByMixedTensorsWithTensor_2', {
  786. 'block': TensorSetItemByMixedTensors_2(value=Tensor(np.ones((3, 4, 2, 3, 4, 5), np.float16))),
  787. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  788. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  789. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  790. }),
  791. ('TensorGetItemByMixedTensorsWithTupleOfNumber_2', {
  792. 'block': TensorSetItemByMixedTensors_2(value=(1.0, 2.0, 3.0, 4.0, 5.0)),
  793. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  794. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  795. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  796. }),
  797. ('TensorGetItemByMixedTensorsWithTupleOfTensor_2', {
  798. 'block': TensorSetItemByMixedTensors_2(value=(Tensor(np.ones((4, 5), np.float16)),
  799. Tensor(np.zeros((4, 5), np.float16)),
  800. Tensor(np.ones((4, 5), np.float16)))),
  801. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  802. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  803. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  804. }),
  805. ('1dTensorItemSetWithInt', {
  806. 'block': TensorItemSetWithNumber(),
  807. 'desc_inputs': [input_1d_ms, value_np_1]
  808. }),
  809. ('1dTensorItemSetWithFloat', {
  810. 'block': TensorItemSetWithNumber(),
  811. 'desc_inputs': [input_1d_ms, value_np_2]
  812. }),
  813. ('1dTensorItemSetByIntWithInt', {
  814. 'block': TensorItemSetByItemWithNumber(),
  815. 'desc_inputs': [input_1d_ms, index_np_1, value_np_1]
  816. }),
  817. ('1dTensorItemSetByIntWithFloat', {
  818. 'block': TensorItemSetByItemWithNumber(),
  819. 'desc_inputs': [input_1d_ms, index_np_1, value_np_2]
  820. }),
  821. ('3dTensorItemSetByIntWithInt', {
  822. 'block': TensorItemSetByItemWithNumber(),
  823. 'desc_inputs': [input_3d_ms, index_np_1, value_np_1]
  824. }),
  825. ('3dTensorItemSetByIntWithFloat', {
  826. 'block': TensorItemSetByItemWithNumber(),
  827. 'desc_inputs': [input_3d_ms, index_np_1, value_np_2]
  828. }),
  829. ('3dTensorItemSetByIntWithInt2', {
  830. 'block': TensorItemSetByItemWithNumber(),
  831. 'desc_inputs': [input_3d_ms, index_np_2, value_np_1]
  832. }),
  833. ('3dTensorItemSetByIntWithFloat2', {
  834. 'block': TensorItemSetByItemWithNumber(),
  835. 'desc_inputs': [input_3d_ms, index_np_2, value_np_2]
  836. }),
  837. ('1dTensorItemSetBy1dTupleWithInt', {
  838. 'block': TensorItemSetByItemWithNumber(),
  839. 'desc_inputs': [input_1d_ms, tuple_index_np_1, value_np_1]
  840. }),
  841. ('1dTensorItemSetBy1dTupleWithFloat', {
  842. 'block': TensorItemSetByItemWithNumber(),
  843. 'desc_inputs': [input_1d_ms, tuple_index_np_1, value_np_2]
  844. }),
  845. ('3dTensorItemSetBy3dTupleWithInt', {
  846. 'block': TensorItemSetByItemWithNumber(),
  847. 'desc_inputs': [input_3d_ms, tuple_index_np_3, value_np_1]
  848. }),
  849. ('3dTensorItemSetBy3dTupleWithFloat', {
  850. 'block': TensorItemSetByItemWithNumber(),
  851. 'desc_inputs': [input_3d_ms, tuple_index_np_3, value_np_2]
  852. }),
  853. ]
  854. test_error_cases = [
  855. ('TensorGetItemByOneTensorDtypeError', {
  856. 'block': (TensorGetItemByOneTensor(), {'exception': IndexError}),
  857. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  858. Tensor(np.random.randint(6, size=(5, 4)), mstype.int8)],
  859. }),
  860. ('TensorGetItemByTwoTensorsShapeError', {
  861. 'block': (TensorGetItemByTwoTensors(), {'exception': IndexError}),
  862. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  863. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  864. Tensor(np.random.randint(7, size=(2, 3, 5)), mstype.int32)],
  865. }),
  866. ('TensorGetItemByTwoTensorsDtypeError', {
  867. 'block': (TensorGetItemByTwoTensors(), {'exception': IndexError}),
  868. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  869. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  870. Tensor(np.random.randint(7, size=(4, 5)), mstype.float32)],
  871. }),
  872. ('TensorGetItemByThreeTensorsShapeError', {
  873. 'block': (TensorGetItemByThreeTensors(), {'exception': IndexError}),
  874. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  875. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  876. Tensor(np.random.randint(7, size=(3, 4, 5)), mstype.int32),
  877. Tensor(np.random.randint(8, size=(5, 2, 4, 5)), mstype.int32)],
  878. }),
  879. ('TensorGetItemByThreeTensorsDtypeError', {
  880. 'block': (TensorGetItemByThreeTensors(), {'exception': IndexError}),
  881. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  882. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  883. Tensor(np.random.randint(7, size=(4, 5)), mstype.int64),
  884. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  885. }),
  886. ('TensorGetItemByMixedTensorsNumberError', {
  887. 'block': (TensorGetItemByMixedTensorsNumberError(), {'exception': IndexError}),
  888. 'desc_inputs': [Tensor(np.arange(6 * 7 * 8).reshape((6, 7, 8)), mstype.int32),
  889. Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  890. Tensor(np.random.randint(7, size=(3, 4, 5)), mstype.int32)],
  891. }),
  892. ('TensorGetItemByMixedTensorsTypeError', {
  893. 'block': (TensorGetItemByMixedTensorsTypeError(), {'exception': IndexError}),
  894. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8 * 9).reshape((3, 4, 5, 6, 7, 8, 9)), mstype.int32),
  895. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  896. Tensor(np.random.randint(4, size=(3, 4, 5)), mstype.int32)],
  897. }),
  898. ('TensorGetItemByMixedTensorsDtypeError', {
  899. 'block': (TensorGetItemByMixedTensors_0(), {'exception': IndexError}),
  900. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8 * 9).reshape((3, 4, 5, 6, 7, 8, 9)), mstype.int32),
  901. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  902. Tensor(np.random.randint(4, size=(4, 5)), mstype.float32)],
  903. }),
  904. ('TensorGetItemByMixedTensorsShapeError', {
  905. 'block': (TensorGetItemByMixedTensors_0(), {'exception': IndexError}),
  906. 'desc_inputs': [Tensor(np.arange(3 * 4 * 5 * 6 * 7 * 8 * 9).reshape((3, 4, 5, 6, 7, 8, 9)), mstype.int32),
  907. Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  908. Tensor(np.random.randint(4, size=(2, 4, 5)), mstype.int32)],
  909. }),
  910. ('TensorSetItemByOneTensorWithNumberTypeError', {
  911. 'block': (TensorSetItemByOneTensorWithNumber(value=0), {'exception': TypeError}),
  912. 'desc_inputs': [Tensor(np.random.randint(4, size=(5, 4)), mstype.int32)],
  913. }),
  914. ('TensorSetItemByOneTensorWithTensorShapeError', {
  915. 'block': (TensorSetItemByOneTensorWithTensor(), {'exception': ValueError}),
  916. 'desc_inputs': [Tensor(np.random.randint(3, size=(5, 4)), mstype.int32),
  917. Tensor(np.zeros((6, 7, 8)), mstype.float32)],
  918. }),
  919. ('TensorSetItemByOneTensorWithTensorDtypeError', {
  920. 'block': (TensorSetItemByOneTensorWithTensor(), {'exception': TypeError}),
  921. 'desc_inputs': [Tensor(np.random.randint(3, size=(5, 4)), mstype.int32),
  922. Tensor(np.zeros((6, 7, 8)), mstype.int32)],
  923. }),
  924. ('TensorSetItemByOneTensorWithTupleOfNumberTypeError', {
  925. 'block': (TensorSetItemByOneTensorWithTupleOfNumber(value=(0, 1, 2, 3, 4, 5, 6, 7)), {'exception': TypeError}),
  926. 'desc_inputs': [Tensor(np.random.randint(5, size=(5, 4)), mstype.int32)],
  927. }),
  928. ('TensorSetItemByOneTensorWithTupleOfNumberNumberError', {
  929. 'block': (TensorSetItemByOneTensorWithTupleOfNumber(value=(0.0, 1.1, 2.2)), {'exception': ValueError}),
  930. 'desc_inputs': [Tensor(np.random.randint(5, size=(5, 4)), mstype.int32)],
  931. }),
  932. ('TensorSetItemByOneTensorWithTupleOfTensorDtyeError', {
  933. 'block': (TensorSetItemByOneTensorWithTupleOfTensor(), {'exception': TypeError}),
  934. 'desc_inputs': [Tensor(np.random.randint(6, size=(5, 4)), mstype.int32),
  935. Tensor(np.zeros((8,), np.int32)),
  936. Tensor(np.ones((8,), np.int32)),
  937. Tensor(np.ones((8,), np.float32) * 2)],
  938. }),
  939. ('TensorSetItemByTensorsWithNumberTypeError', {
  940. 'block': (TensorSetItemByTensorsWithNumber(value=0), {'exception': TypeError}),
  941. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  942. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  943. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  944. }),
  945. ('TensorSetItemByTensorsWithTensorShapeError', {
  946. 'block': (TensorSetItemByTensorsWithTensor(), {'exception': ValueError}),
  947. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  948. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  949. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  950. Tensor(np.zeros((2, 5)), mstype.float32)],
  951. }),
  952. ('TensorSetItemByTensorsWithTensorTypeError', {
  953. 'block': (TensorSetItemByTensorsWithTensor(), {'exception': TypeError}),
  954. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  955. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  956. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  957. Tensor(np.zeros((4, 5)), mstype.int32)],
  958. }),
  959. ('TensorSetItemByTensorsWithTensorNumberError', {
  960. 'block': (TensorSetItemByTensorsWithTensorNumberError(), {'exception': IndexError}),
  961. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  962. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  963. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  964. Tensor(np.random.randint(8, size=(1, 3, 4, 5)), mstype.int32),
  965. Tensor(np.zeros((2, 5)), mstype.float32)],
  966. }),
  967. ('TensorSetItemByTensorsWithTupleOfNumberTypeError', {
  968. 'block': (TensorSetItemByTensorsWithTupleOfNumber(value=(0.0, 1, 2, 3, 4)), {'exception': TypeError}),
  969. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  970. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  971. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  972. }),
  973. ('TensorSetItemByTensorsWithTupleOfNumberNumberError', {
  974. 'block': (TensorSetItemByTensorsWithTupleOfNumber(value=(0.0, 1.0, 2.0, 3.0)), {'exception': ValueError}),
  975. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  976. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  977. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32)],
  978. }),
  979. ('TensorSetItemByTensorsWithTupleOfTensorNumberError', {
  980. 'block': (TensorSetItemByTensorsWithTupleOfTensorNumberError(), {'exception': ValueError}),
  981. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  982. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  983. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  984. Tensor(np.zeros((4, 5)), mstype.float32),
  985. Tensor(np.ones((4, 5)), mstype.float32)],
  986. }),
  987. ('TensorSetItemByTensorsWithTupleOfTensorTypeError', {
  988. 'block': (TensorSetItemByTensorsWithTupleOfTensor(), {'exception': TypeError}),
  989. 'desc_inputs': [Tensor(np.random.randint(6, size=(3, 4, 5)), mstype.int32),
  990. Tensor(np.random.randint(7, size=(4, 5)), mstype.int32),
  991. Tensor(np.random.randint(8, size=(5, 3, 4, 5)), mstype.int32),
  992. Tensor(np.zeros((4, 5)), mstype.float32),
  993. Tensor(np.ones((4, 5)), mstype.int32),
  994. Tensor(np.ones((4, 5)) * 2, mstype.int32)],
  995. }),
  996. ('TensorSetItemByMixedTensorsWithNumberValueTypeError', {
  997. 'block': (TensorSetItemByMixedTensors_1(value=88), {'exception': TypeError}),
  998. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  999. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1000. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1001. }),
  1002. ('TensorSetItemByMixedTensorsWithNumberIndexTypeError', {
  1003. 'block': (TensorSetItemByMixedTensors_1(value=88.0), {'exception': IndexError}),
  1004. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1005. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1006. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.float32)],
  1007. }),
  1008. ('TensorSetItemByMixedTensorsWithTensorValueDtypeError', {
  1009. 'block': (TensorSetItemByMixedTensors_1(value=Tensor(np.ones((5, 2, 6), np.int32))),
  1010. {'exception': TypeError}),
  1011. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1012. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1013. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1014. }),
  1015. ('TensorSetItemByMixedTensorsWithTensorValueShapeError', {
  1016. 'block': (TensorSetItemByMixedTensors_1(value=Tensor(np.ones((3, 2, 6), np.float32))),
  1017. {'exception': ValueError}),
  1018. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1019. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1020. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1021. }),
  1022. ('TensorSetItemByMixedTensorsWithTensorIndexDtypeError', {
  1023. 'block': (TensorSetItemByMixedTensors_1(value=Tensor(np.ones((5, 2, 6), np.float32))),
  1024. {'exception': IndexError}),
  1025. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1026. Tensor(np.random.randint(4, size=(4, 5)), mstype.float32),
  1027. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1028. }),
  1029. ('TensorGetItemByMixedTensorsWithTupleOfNumberValueTypeError', {
  1030. 'block': (TensorSetItemByMixedTensors_1(value=(1.0, 2, 3.0, 4.0, 5.0, 6.0)),
  1031. {'exception': TypeError}),
  1032. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1033. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1034. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1035. }),
  1036. ('TensorGetItemByMixedTensorsWithTupleOfTensorValueDtypeError', {
  1037. 'block': (TensorSetItemByMixedTensors_1(value=(Tensor(np.ones((5, 2, 6), np.float32)),
  1038. Tensor(np.zeros((5, 2, 6), np.float32)),
  1039. Tensor(np.ones((5, 2, 6), np.float32)),
  1040. Tensor(np.ones((5, 2, 6), np.int32)))),
  1041. {'exception': TypeError}),
  1042. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.int32),
  1043. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1044. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1045. }),
  1046. ('TensorGetItemByMixedTensorsWithTupleOfTensorIndexDtypeError', {
  1047. 'block': (TensorSetItemByMixedTensors_1(value=(Tensor(np.ones((5, 2, 6), np.float32)),
  1048. Tensor(np.zeros((5, 2, 6), np.float32)),
  1049. Tensor(np.ones((5, 2, 6), np.float32)),
  1050. Tensor(np.ones((5, 2, 6), np.int32)))),
  1051. {'exception': IndexError}),
  1052. 'desc_inputs': [Tensor(np.random.randint(3, size=(3, 4, 5)), mstype.float32),
  1053. Tensor(np.random.randint(4, size=(4, 5)), mstype.int32),
  1054. Tensor(np.random.randint(3, size=(2, 1, 4, 5)), mstype.int32)],
  1055. }),
  1056. ('3dTensorItemSetWithInt', {
  1057. 'block': (TensorItemSetWithNumber(), {'exception': IndexError}),
  1058. 'desc_inputs': [input_3d_ms, value_np_1]
  1059. }),
  1060. ('3dTensorItemSetWithFloat', {
  1061. 'block': (TensorItemSetWithNumber(), {'exception': IndexError}),
  1062. 'desc_inputs': [input_3d_ms, value_np_2]
  1063. }),
  1064. ('1dTensorItemSetByOverflowIntWithInt', {
  1065. 'block': (TensorItemSetByItemWithNumber(), {'exception': IndexError}),
  1066. 'desc_inputs': [input_1d_ms, index_np_2, value_np_1]
  1067. }),
  1068. ('1dTensorItemSetByOverflowIntWithFloat', {
  1069. 'block': (TensorItemSetByItemWithNumber(), {'exception': IndexError}),
  1070. 'desc_inputs': [input_1d_ms, index_np_2, value_np_2]
  1071. }),
  1072. ('1dTensorItemSetByFloatWithInt', {
  1073. 'block': (TensorItemSetByItemWithNumber(), {'exception': TypeError}),
  1074. 'desc_inputs': [input_1d_ms, index_np_4, value_np_1]
  1075. }),
  1076. ('1dTensorItemSetByFLoatWithFloat', {
  1077. 'block': (TensorItemSetByItemWithNumber(), {'exception': TypeError}),
  1078. 'desc_inputs': [input_1d_ms, index_np_4, value_np_2]
  1079. }),
  1080. ('3dTensorItemSetByOverflowIntWithInt', {
  1081. 'block': (TensorItemSetByItemWithNumber(), {'exception': IndexError}),
  1082. 'desc_inputs': [input_3d_ms, index_np_3, value_np_1]
  1083. }),
  1084. ('3dTensorItemSetByOverflowIntWithFloat', {
  1085. 'block': (TensorItemSetByItemWithNumber(), {'exception': IndexError}),
  1086. 'desc_inputs': [input_3d_ms, index_np_3, value_np_2]
  1087. }),
  1088. ('3dTensorItemSetByFloatIntWithInt', {
  1089. 'block': (TensorItemSetByItemWithNumber(), {'exception': TypeError}),
  1090. 'desc_inputs': [input_3d_ms, index_np_4, value_np_1]
  1091. }),
  1092. ('3dTensorItemSetByFloatWithFloat', {
  1093. 'block': (TensorItemSetByItemWithNumber(), {'exception': TypeError}),
  1094. 'desc_inputs': [input_3d_ms, index_np_4, value_np_2]
  1095. }),
  1096. ('1dTensorItemSetBy2dTupleWithFloat', {
  1097. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1098. 'desc_inputs': [input_1d_ms, tuple_index_np_2, value_np_1]
  1099. }),
  1100. ('1dTensorItemSetBy2dTupleWithFloat', {
  1101. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1102. 'desc_inputs': [input_1d_ms, tuple_index_np_2, value_np_2]
  1103. }),
  1104. ('3dTensorItemSetBy1dTupleWithFloat', {
  1105. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1106. 'desc_inputs': [input_3d_ms, tuple_index_np_1, value_np_1]
  1107. }),
  1108. ('3dTensorItemSetBy1dTupleWithFloat', {
  1109. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1110. 'desc_inputs': [input_3d_ms, tuple_index_np_1, value_np_2]
  1111. }),
  1112. ('3dTensorItemSetBy2dTupleWithFloat', {
  1113. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1114. 'desc_inputs': [input_3d_ms, tuple_index_np_2, value_np_1]
  1115. }),
  1116. ('3dTensorItemSetBy2dTupleWithFloat', {
  1117. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1118. 'desc_inputs': [input_3d_ms, tuple_index_np_2, value_np_2]
  1119. }),
  1120. ('3dTensorItemSetBy3dTupleOverFloawWithFloat', {
  1121. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1122. 'desc_inputs': [input_3d_ms, tuple_index_np_4, value_np_1]
  1123. }),
  1124. ('3dTensorItemSetBy3dTupleOverFloawWithFloat', {
  1125. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1126. 'desc_inputs': [input_3d_ms, tuple_index_np_4, value_np_2]
  1127. }),
  1128. ('3dTensorItemSetBy4dTupleWithFloat', {
  1129. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1130. 'desc_inputs': [input_3d_ms, tuple_index_np_5, value_np_1]
  1131. }),
  1132. ('3dTensorItemSetBy4dTupleWithFloat', {
  1133. 'block': (TensorItemSetByItemWithNumber(), {'exception': ValueError}),
  1134. 'desc_inputs': [input_3d_ms, tuple_index_np_5, value_np_2]
  1135. })
  1136. ]
  1137. @mindspore_test(pipeline_for_compile_forward_ge_graph_for_case_by_case_config)
  1138. def test_exec():
  1139. context.set_context(mode=context.GRAPH_MODE)
  1140. return test_cases
  1141. @mindspore_test(pipeline_for_compile_forward_ge_graph_for_case_by_case_config_exception)
  1142. def test_check_exception():
  1143. return test_error_cases
  1144. def test_tensor_slice_reduce_out_of_bounds_neg():
  1145. class NetWork(Cell):
  1146. def __init__(self):
  1147. super(NetWork, self).__init__()
  1148. self.tensor_ret = Tensor(np.array(9, np.int32))
  1149. def construct(self, tensor):
  1150. ret = tensor[-7, 3, 4]
  1151. return ret
  1152. input_tensor = Tensor(np.ones([6, 8, 10], np.int32))
  1153. net = NetWork()
  1154. with pytest.raises(IndexError):
  1155. net(input_tensor)
  1156. def test_tensor_slice_reduce_out_of_bounds_positive():
  1157. class NetWork(Cell):
  1158. def __init__(self):
  1159. super(NetWork, self).__init__()
  1160. self.tensor_ret = Tensor(np.array(9, np.int32))
  1161. def construct(self, tensor):
  1162. ret = tensor[6, 3, 4]
  1163. return ret
  1164. input_tensor = Tensor(np.ones([6, 8, 10], np.int32))
  1165. net = NetWork()
  1166. with pytest.raises(IndexError):
  1167. net(input_tensor)