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_tensor_setitem """ 16import numpy as np 17import pytest 18 19from mindspore import Tensor, context 20from mindspore import dtype as mstype 21 22 23def setup_module(): 24 context.set_context(mode=context.PYNATIVE_MODE) 25 26 27# GPU: does not supported op "FloorMod" 28@pytest.mark.level1 29@pytest.mark.platform_arm_ascend_training 30@pytest.mark.platform_x86_ascend_training 31@pytest.mark.env_onecard 32def test_tesnsor_augassign_by_slice(): 33 input_np_3d = np.arange(120).reshape(4, 5, 6).astype(np.float32) 34 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 35 index_slice_1 = slice(1, None, None) 36 index_slice_2 = slice(None, 4, None) 37 index_slice_3 = slice(-3, 4, None) 38 index_slice_4 = slice(2, -1, None) 39 index_slice_7 = slice(1, 5, None) 40 index_slice_8 = slice(-5, 3, None) 41 42 value_number = 3 43 value_list_1_ele = [2] 44 value_list_mul_ele = [10, 20, 30, 40, 50, 60] 45 value_list_much_ele = [10, 20, 30, 40, 50, 60, 70] 46 47 input_tensor_3d[index_slice_1] += value_number 48 input_np_3d[index_slice_1] += value_number 49 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 50 51 input_tensor_3d[index_slice_2] -= value_list_1_ele 52 input_np_3d[index_slice_2] -= value_list_1_ele 53 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 54 55 input_tensor_3d[index_slice_3] *= value_list_mul_ele 56 input_np_3d[index_slice_3] *= value_list_mul_ele 57 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 58 59 input_tensor_3d[index_slice_4] /= value_number 60 input_np_3d[index_slice_4] /= value_number 61 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 62 63 input_tensor_3d[index_slice_7] /= value_number 64 input_np_3d[index_slice_7] /= value_number 65 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 66 67 input_tensor_3d[index_slice_8] += value_number 68 input_np_3d[index_slice_8] += value_number 69 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 70 71 with pytest.raises(ValueError): 72 input_tensor_3d[index_slice_8] /= value_list_much_ele 73 74 75# GPU: does not supported op "FloorMod" 76@pytest.mark.level1 77@pytest.mark.platform_arm_ascend_training 78@pytest.mark.platform_x86_ascend_training 79@pytest.mark.env_onecard 80def test_tesnsor_augassign_by_ellipsis(): 81 input_np_3d = np.arange(24).reshape(2, 3, 4).astype(np.float32) 82 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 83 84 value_number_1, value_number_2 = 1, 2.0 85 86 value_np_1 = np.array([1]) 87 value_np_2 = np.array([1, 2, 3, 4]) 88 value_np_3 = np.arange(12).reshape(3, 4) 89 value_tensor_1 = Tensor(value_np_1) 90 value_tensor_2 = Tensor(value_np_2) 91 value_tensor_3 = Tensor(value_np_3) 92 93 value_tuple_1_ele = (0.5,) 94 value_tuple_4_ele = (0.1, 0.2, 0.3, 0.4) 95 96 value_list_1_ele = [1.5] 97 value_list_4_ele = [1.1, 1.2, 1.3, 1.4] 98 99 input_tensor_3d[...] += value_number_1 100 input_np_3d[...] += value_number_1 101 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 102 103 input_tensor_3d[...] -= value_number_2 104 input_np_3d[...] -= value_number_2 105 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 106 107 input_tensor_3d[...] *= value_tensor_1 108 input_np_3d[...] *= value_np_1 109 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 110 111 input_tensor_3d[...] /= value_tensor_2 112 input_np_3d[...] /= value_np_2 113 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 114 115 input_tensor_3d[...] /= value_tensor_3 116 input_np_3d[...] /= value_np_3 117 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 118 119 input_tensor_3d[...] -= value_tuple_1_ele 120 input_np_3d[...] -= value_tuple_1_ele 121 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 122 123 input_tensor_3d[...] *= value_tuple_4_ele 124 input_np_3d[...] *= value_tuple_4_ele 125 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 126 127 input_tensor_3d[...] -= value_list_1_ele 128 input_np_3d[...] -= value_list_1_ele 129 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 130 131 input_tensor_3d[...] *= value_list_4_ele 132 input_np_3d[...] *= value_list_4_ele 133 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 134 135 136# GPU: does not supported op "FloorMod" 137@pytest.mark.level1 138@pytest.mark.platform_arm_ascend_training 139@pytest.mark.platform_x86_ascend_training 140@pytest.mark.env_onecard 141def test_tesnsor_augassign_by_bool(): 142 input_np_3d = np.arange(120).reshape(4, 5, 6).astype(np.float32) 143 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 144 145 index_bool_1 = True 146 index_bool_2 = False 147 148 value_number = 1 149 150 value_np_1 = np.array([1], np.float32) 151 value_np_2 = np.array([1, 2, 3, 4, 5, 6], np.float32) 152 value_np_3 = np.arange(1, 31).astype(np.float32).reshape(5, 6) 153 value_np_4 = np.arange(1, 121).astype(np.float32).reshape(4, 5, 6) 154 value_tensor_1 = Tensor(value_np_1, mstype.float32) 155 value_tensor_2 = Tensor(value_np_2, mstype.float32) 156 value_tensor_3 = Tensor(value_np_3, mstype.float32) 157 value_tensor_4 = Tensor(value_np_4, mstype.float32) 158 159 value_tuple_1_ele = (0.5,) 160 value_tuple_6_ele = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6) 161 162 value_list_1_ele = [1.5] 163 value_list_6_ele = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6] 164 165 input_tensor_3d[index_bool_1] += value_number 166 input_np_3d[index_bool_1] += value_number 167 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 168 169 input_tensor_3d[index_bool_1] -= value_tensor_1 170 input_np_3d[index_bool_1] -= value_np_1 171 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 172 173 input_tensor_3d[index_bool_1] *= value_tensor_2 174 input_np_3d[index_bool_1] *= value_np_2 175 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 176 177 input_tensor_3d[index_bool_1] -= value_tensor_3 178 input_np_3d[index_bool_1] -= value_np_3 179 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 180 181 input_tensor_3d[index_bool_1] //= value_tensor_4 182 input_np_3d[index_bool_1] //= value_np_4 183 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 184 185 input_tensor_3d[index_bool_1] %= value_tuple_1_ele 186 input_np_3d[index_bool_1] %= value_tuple_1_ele 187 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 188 189 input_tensor_3d[index_bool_1] %= value_tuple_6_ele 190 input_np_3d[index_bool_1] %= value_tuple_6_ele 191 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 192 193 input_tensor_3d[index_bool_1] %= value_list_1_ele 194 input_np_3d[index_bool_1] %= value_list_1_ele 195 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 196 197 input_tensor_3d[index_bool_1] -= value_list_6_ele 198 input_np_3d[index_bool_1] -= value_list_6_ele 199 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 200 201 with pytest.raises(IndexError): 202 input_tensor_3d[index_bool_2] *= value_tensor_2 203 204 205# GPU: does not supported op "FloorMod" 206@pytest.mark.level0 207@pytest.mark.platform_arm_ascend_training 208@pytest.mark.platform_x86_ascend_training 209@pytest.mark.env_onecard 210def test_tesnsor_augassign_by_number(): 211 input_np_1d = np.arange(4).astype(np.float32) 212 input_tensor_1d = Tensor(input_np_1d, mstype.float32) 213 input_np_3d = np.arange(80).reshape(4, 5, 4).astype(np.float32) 214 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 215 216 number_index_1, number_index_2, number_index_3, number_index_4 = 0, 3, 4, 3.4 217 218 value_number = 2 219 220 value_np_scalar = np.array(5) 221 value_np_1_ele = np.array([1]) 222 value_np_1d = np.array([1, 2, 3, 4]) 223 value_np_2d = np.arange(20).reshape(5, 4) 224 value_tensor_scalar = Tensor(value_np_scalar, mstype.float32) 225 value_tensor_1_ele = Tensor(value_np_1_ele, mstype.float32) 226 value_tensor_1d = Tensor(value_np_1d, mstype.float32) 227 value_tensor_2d = Tensor(value_np_2d, mstype.float32) 228 229 value_tuple_1_ele = (100,) 230 value_tuple_mul_ele = (10, 20, 30, 40) 231 value_tuple_much_ele = (10, 20, 30, 40, 10) 232 value_tuple_empty = () 233 234 value_list_1_ele = [101] 235 value_list_mul_ele = [11, 21, 31, 41] 236 value_list_much_ele = [12, 22, 33, 43, 18] 237 value_list_empty = [] 238 239 input_tensor_1d[number_index_1] += value_number 240 input_np_1d[number_index_1] += value_number 241 assert np.allclose(input_tensor_1d.asnumpy(), input_np_1d, 0.0001, 0.0001) 242 243 input_tensor_1d[number_index_2] -= value_number 244 input_np_1d[number_index_2] -= value_number 245 assert np.allclose(input_tensor_1d.asnumpy(), input_np_1d, 0.0001, 0.0001) 246 247 input_tensor_3d[number_index_1] *= value_number 248 input_np_3d[number_index_1] *= value_number 249 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 250 251 input_tensor_3d[number_index_2] /= value_number 252 input_np_3d[number_index_2] /= value_number 253 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 254 255 input_tensor_1d[number_index_1] //= value_tensor_scalar 256 input_np_1d[number_index_1] //= value_np_scalar 257 assert np.allclose(input_tensor_1d.asnumpy(), input_np_1d, 0.0001, 0.0001) 258 259 input_tensor_3d[number_index_1] *= value_tensor_scalar 260 input_np_3d[number_index_1] *= value_np_scalar 261 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 262 263 input_tensor_3d[number_index_2] %= value_tensor_1_ele 264 input_np_3d[number_index_2] %= value_np_1_ele 265 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 266 267 input_tensor_3d[number_index_1] += value_tensor_1d 268 input_np_3d[number_index_1] += value_np_1d 269 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 270 271 input_tensor_3d[number_index_2] -= value_tensor_2d 272 input_np_3d[number_index_2] -= value_np_2d 273 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 274 275 input_tensor_1d[number_index_1] += value_tuple_1_ele 276 input_np_1d[number_index_1] += value_tuple_1_ele 277 assert np.allclose(input_tensor_1d.asnumpy(), input_np_1d, 0.0001, 0.0001) 278 279 input_tensor_3d[number_index_1] -= value_tuple_1_ele 280 input_np_3d[number_index_1] -= value_tuple_1_ele 281 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 282 283 input_tensor_3d[number_index_1] *= value_tuple_mul_ele 284 input_np_3d[number_index_1] *= value_tuple_mul_ele 285 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 286 287 input_tensor_1d[number_index_2] += value_list_1_ele 288 input_np_1d[number_index_2] += value_list_1_ele 289 assert np.allclose(input_tensor_1d.asnumpy(), input_np_1d, 0.0001, 0.0001) 290 291 input_tensor_3d[number_index_1] -= value_list_1_ele 292 input_np_3d[number_index_1] -= value_list_1_ele 293 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 294 295 input_tensor_3d[number_index_2] *= value_list_mul_ele 296 input_np_3d[number_index_2] *= value_list_mul_ele 297 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 298 299 with pytest.raises(IndexError): 300 input_tensor_1d[number_index_3] += value_number 301 with pytest.raises(IndexError): 302 input_tensor_3d[number_index_3] -= value_number 303 with pytest.raises(IndexError): 304 input_tensor_1d[number_index_4] *= value_number 305 with pytest.raises(IndexError): 306 input_tensor_3d[number_index_4] /= value_number 307 308 with pytest.raises(ValueError): 309 input_tensor_1d[number_index_1] *= value_tuple_mul_ele 310 with pytest.raises(ValueError): 311 input_tensor_3d[number_index_1] *= value_tuple_much_ele 312 with pytest.raises(RuntimeError): 313 input_tensor_1d[number_index_1] /= value_tuple_empty 314 315 with pytest.raises(ValueError): 316 input_tensor_3d[number_index_2] //= value_list_much_ele 317 with pytest.raises(ValueError): 318 input_tensor_3d[number_index_2] *= value_list_empty 319 320 321# GPU: does not supported op "FloorMod" 322@pytest.mark.level0 323@pytest.mark.platform_arm_ascend_training 324@pytest.mark.platform_x86_ascend_training 325@pytest.mark.env_onecard 326def test_tesnsor_augassign_by_tensor(): 327 input_np_3d = np.arange(120).reshape(4, 5, 6).astype(np.float32) 328 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 329 330 index_np_1d_1ele = np.random.randint(4, size=1) 331 index_np_1d = np.random.randint(4, size=6) 332 index_np_2d = np.random.randint(4, size=(5, 6)) 333 index_np_3d = np.random.randint(4, size=(4, 5, 6)) 334 335 index_tensor_1d_1ele = Tensor(index_np_1d_1ele, mstype.int32) 336 index_tensor_1d = Tensor(index_np_1d, mstype.int32) 337 index_tensor_2d = Tensor(index_np_2d, mstype.int32) 338 index_tensor_3d = Tensor(index_np_3d, mstype.int32) 339 340 value_number = 1 341 342 value_np_1 = np.array([1]) 343 value_np_2 = np.array([1, 2, 3, 4, 5, 6]) 344 value_np_3 = np.arange(1, 31).reshape(5, 6) 345 value_np_4 = np.arange(1, 181).reshape(6, 5, 6) 346 value_tensor_1 = Tensor(value_np_1) 347 value_tensor_2 = Tensor(value_np_2) 348 value_tensor_3 = Tensor(value_np_3) 349 value_tensor_4 = Tensor(value_np_4) 350 351 value_tuple_1_ele = (0.5,) 352 value_tuple_6_ele = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6) 353 354 value_list_1_ele = [1.5] 355 value_list_6_ele = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6] 356 357 input_tensor_3d[index_tensor_1d_1ele] += value_number 358 input_np_3d[index_np_1d_1ele] += value_number 359 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 360 361 input_tensor_3d[index_tensor_1d_1ele] -= value_tensor_2 362 input_np_3d[index_np_1d_1ele] -= value_np_2 363 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 364 365 input_tensor_3d[index_tensor_1d_1ele] /= value_tuple_6_ele 366 input_np_3d[index_np_1d_1ele] /= value_tuple_6_ele 367 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 368 369 input_tensor_3d[index_tensor_1d_1ele] *= value_list_1_ele 370 input_np_3d[index_np_1d_1ele] *= value_list_1_ele 371 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 372 373 input_tensor_3d[index_tensor_1d] += value_number 374 input_np_3d[index_np_1d] += value_number 375 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 376 377 input_tensor_3d[index_tensor_1d] -= value_tensor_1 378 input_np_3d[index_np_1d] -= value_np_1 379 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 380 381 input_tensor_3d[index_tensor_1d] /= value_tuple_1_ele 382 input_np_3d[index_np_1d] /= value_tuple_1_ele 383 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 384 385 input_tensor_3d[index_tensor_1d] += value_list_6_ele 386 input_np_3d[index_np_1d] += value_list_6_ele 387 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 388 389 input_tensor_3d[index_tensor_2d] -= value_number 390 input_np_3d[index_np_2d] -= value_number 391 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 392 393 input_tensor_3d[index_tensor_2d] *= value_tensor_2 394 input_np_3d[index_np_2d] *= value_np_2 395 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 396 397 input_tensor_3d[index_tensor_2d] /= value_tensor_4 398 input_np_3d[index_np_2d] /= value_np_4 399 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 400 401 input_tensor_3d[index_tensor_2d] += value_tuple_6_ele 402 input_np_3d[index_np_2d] += value_tuple_6_ele 403 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 404 405 input_tensor_3d[index_tensor_2d] -= value_list_1_ele 406 input_np_3d[index_np_2d] -= value_list_1_ele 407 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 408 409 input_tensor_3d[index_tensor_3d] *= value_number 410 input_np_3d[index_np_3d] *= value_number 411 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 412 413 input_tensor_3d[index_tensor_3d] /= value_tensor_1 414 input_np_3d[index_np_3d] /= value_np_1 415 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 416 417 input_tensor_3d[index_tensor_3d] += value_tensor_3 418 input_np_3d[index_np_3d] += value_np_3 419 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 420 421 input_tensor_3d[index_tensor_3d] /= value_tuple_1_ele 422 input_np_3d[index_np_3d] /= value_tuple_1_ele 423 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 424 425 input_tensor_3d[index_tensor_3d] -= value_list_6_ele 426 input_np_3d[index_np_3d] -= value_list_6_ele 427 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 428 429 430# GPU: does not supported op "FloorMod" 431@pytest.mark.level0 432@pytest.mark.platform_arm_ascend_training 433@pytest.mark.platform_x86_ascend_training 434@pytest.mark.env_onecard 435def test_tesnsor_augassign_by_list(): 436 input_np_3d = np.arange(120).reshape(4, 5, 6).astype(np.float32) 437 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 438 439 list_index_empty = [] 440 list_index_int_1 = [2] 441 list_index_int_2 = [3, 1] 442 list_index_int_overflow = [4, 2] 443 list_index_bool_1 = [False, False, False, False] 444 list_index_bool_2 = [True, True, True, True] 445 list_index_bool_3 = [True, False, True, False] 446 list_index_mix_1 = [True, 0] 447 list_index_mix_2 = [3, False] 448 449 value_number = 2 450 451 value_np_scalar = np.array(100) 452 value_np_1_ele = np.array([1]) 453 value_np_1d = np.array([1, 2, 3, 4, 5, 6]) 454 value_np_2d = np.arange(1, 31).reshape(5, 6) 455 value_np_3d = np.arange(1, 61).reshape(2, 5, 6) 456 value_tensor_scalar = Tensor(value_np_scalar, mstype.float32) 457 value_tensor_1_ele = Tensor(value_np_1_ele, mstype.float32) 458 value_tensor_1d = Tensor(value_np_1d, mstype.float32) 459 value_tensor_2d = Tensor(value_np_2d, mstype.float32) 460 value_tensor_3d = Tensor(value_np_3d, mstype.float32) 461 462 input_tensor_3d[list_index_int_1] += value_number 463 input_np_3d[list_index_int_1] += value_number 464 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 465 466 input_tensor_3d[list_index_int_1] += value_tensor_scalar 467 input_np_3d[list_index_int_1] += value_np_scalar 468 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 469 470 input_tensor_3d[list_index_int_1] -= value_tensor_1_ele 471 input_np_3d[list_index_int_1] -= value_np_1_ele 472 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 473 474 input_tensor_3d[list_index_int_1] *= value_tensor_1d 475 input_np_3d[list_index_int_1] *= value_np_1d 476 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 477 478 input_tensor_3d[list_index_int_1] /= value_tensor_2d 479 input_np_3d[list_index_int_1] /= value_np_2d 480 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 481 482 input_tensor_3d[list_index_int_2] += value_number 483 input_np_3d[list_index_int_2] += value_number 484 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 485 486 input_tensor_3d[list_index_int_2] //= value_tensor_scalar 487 input_np_3d[list_index_int_2] //= value_np_scalar 488 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 489 490 input_tensor_3d[list_index_int_2] *= value_tensor_1_ele 491 input_np_3d[list_index_int_2] *= value_np_1_ele 492 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 493 494 input_tensor_3d[list_index_int_2] %= value_tensor_1d 495 input_np_3d[list_index_int_2] %= value_np_1d 496 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 497 498 input_tensor_3d[list_index_int_2] += value_tensor_2d 499 input_np_3d[list_index_int_2] += value_np_2d 500 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 501 502 input_tensor_3d[list_index_int_2] -= value_tensor_3d 503 input_np_3d[list_index_int_2] -= value_np_3d 504 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 505 506 input_tensor_3d[list_index_bool_2] += value_number 507 input_np_3d[list_index_bool_2] += value_number 508 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 509 510 input_tensor_3d[list_index_bool_2] *= value_tensor_scalar 511 input_np_3d[list_index_bool_2] *= value_np_scalar 512 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 513 514 input_tensor_3d[list_index_bool_2] /= value_tensor_1_ele 515 input_np_3d[list_index_bool_2] /= value_np_1_ele 516 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 517 518 input_tensor_3d[list_index_bool_2] //= value_tensor_1d 519 input_np_3d[list_index_bool_2] //= value_np_1d 520 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 521 522 input_tensor_3d[list_index_bool_2] %= value_tensor_2d 523 input_np_3d[list_index_bool_2] %= value_np_2d 524 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 525 526 input_tensor_3d[list_index_bool_3] += value_number 527 input_np_3d[list_index_bool_3] += value_number 528 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 529 530 input_tensor_3d[list_index_bool_3] *= value_tensor_scalar 531 input_np_3d[list_index_bool_3] *= value_np_scalar 532 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 533 534 input_tensor_3d[list_index_bool_3] += value_tensor_1_ele 535 input_np_3d[list_index_bool_3] += value_np_1_ele 536 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 537 538 input_tensor_3d[list_index_bool_3] -= value_tensor_1d 539 input_np_3d[list_index_bool_3] -= value_np_1d 540 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 541 542 input_tensor_3d[list_index_bool_3] *= value_tensor_2d 543 input_np_3d[list_index_bool_3] *= value_np_2d 544 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 545 546 input_tensor_3d[list_index_bool_3] /= value_tensor_3d 547 input_np_3d[list_index_bool_3] /= value_np_3d 548 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 549 550 input_tensor_3d[list_index_mix_1] += value_number 551 input_np_3d[list_index_mix_1] += value_number 552 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 553 554 input_tensor_3d[list_index_mix_1] *= value_tensor_scalar 555 input_np_3d[list_index_mix_1] *= value_np_scalar 556 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 557 558 input_tensor_3d[list_index_mix_1] += value_tensor_1_ele 559 input_np_3d[list_index_mix_1] += value_np_1_ele 560 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 561 562 input_tensor_3d[list_index_mix_1] -= value_tensor_1d 563 input_np_3d[list_index_mix_1] -= value_np_1d 564 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 565 566 input_tensor_3d[list_index_mix_1] *= value_tensor_2d 567 input_np_3d[list_index_mix_1] *= value_np_2d 568 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 569 570 input_tensor_3d[list_index_mix_1] /= value_tensor_3d 571 input_np_3d[list_index_mix_1] /= value_np_3d 572 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 573 574 input_tensor_3d[list_index_mix_2] += value_number 575 input_np_3d[list_index_mix_2] += value_number 576 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 577 578 input_tensor_3d[list_index_mix_2] *= value_tensor_scalar 579 input_np_3d[list_index_mix_2] *= value_np_scalar 580 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 581 582 input_tensor_3d[list_index_mix_2] += value_tensor_1_ele 583 input_np_3d[list_index_mix_2] += value_np_1_ele 584 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 585 586 input_tensor_3d[list_index_mix_2] -= value_tensor_1d 587 input_np_3d[list_index_mix_2] -= value_np_1d 588 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 589 590 input_tensor_3d[list_index_mix_2] *= value_tensor_2d 591 input_np_3d[list_index_mix_2] *= value_np_2d 592 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 593 594 input_tensor_3d[list_index_mix_2] /= value_tensor_3d 595 input_np_3d[list_index_mix_2] /= value_np_3d 596 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 597 598 with pytest.raises(IndexError): 599 input_tensor_3d[list_index_empty] += value_number 600 with pytest.raises(IndexError): 601 input_tensor_3d[list_index_int_overflow] += value_number 602 with pytest.raises(IndexError): 603 input_tensor_3d[list_index_bool_1] += value_number 604 605 606# GPU: does not supported op "FloorMod" 607@pytest.mark.level1 608@pytest.mark.platform_arm_ascend_training 609@pytest.mark.platform_x86_ascend_training 610@pytest.mark.env_onecard 611def test_tesnsor_augassign_by_tuple(): 612 input_np_3d = np.arange(120).reshape(4, 5, 6).astype(np.float32) 613 input_tensor_3d = Tensor(input_np_3d, mstype.float32) 614 615 index_tuple_1 = (slice(1, 3, 1), ..., [1, 3, 2]) 616 index_tuple_2 = (2, 3, 4) 617 index_tuple_4 = ([2, 3], True) 618 index_tuple_5 = (False, 3) 619 index_tuple_6 = (False, slice(3, 1, -1)) 620 index_tuple_7 = (..., slice(None, 6, 2)) 621 622 value_number = 2 623 624 value_np_scalar = np.array(100) 625 value_tensor_scalar = Tensor(value_np_scalar, mstype.float32) 626 627 input_tensor_3d[index_tuple_1] += value_number 628 input_np_3d[index_tuple_1] += value_number 629 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 630 631 input_tensor_3d[index_tuple_1] -= Tensor(np.ones((2, 5, 3)), mstype.float32) 632 input_np_3d[index_tuple_1] -= np.ones((2, 5, 3)) 633 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 634 635 input_tensor_3d[index_tuple_2] *= value_tensor_scalar 636 input_np_3d[index_tuple_2] *= value_np_scalar 637 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 638 639 input_tensor_3d[index_tuple_4] //= value_number 640 input_np_3d[index_tuple_4] //= value_number 641 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 642 643 input_tensor_3d[index_tuple_7] += value_number 644 input_np_3d[index_tuple_7] += value_number 645 assert np.allclose(input_tensor_3d.asnumpy(), input_np_3d, 0.0001, 0.0001) 646 647 with pytest.raises(IndexError): 648 input_tensor_3d[index_tuple_5] *= value_number 649 650 with pytest.raises(IndexError): 651 input_tensor_3d[index_tuple_6] %= value_number 652