sigmoid.https.any.js (21916B)
1 // META: title=test WebNN API sigmoid operation 2 // META: global=window 3 // META: variant=?cpu 4 // META: variant=?gpu 5 // META: variant=?npu 6 // META: script=../resources/utils.js 7 // META: timeout=long 8 9 'use strict'; 10 11 // https://www.w3.org/TR/webnn/#api-mlgraphbuilder-sigmoid-method 12 // Compute the sigmoid function of the input tensor. The calculation follows the 13 // expression 1 / (exp(-x) + 1). 14 // 15 // MLOperand sigmoid(MLOperand input); 16 17 const sigmoidTests = [ 18 { 19 'name': 'sigmoid float32 1D constant tensor', 20 'graph': { 21 'inputs': { 22 'sigmoidInput': { 23 'data': [ 24 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 25 4.431885719299316, -0.93868488073349, 4.591195583343506, 26 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 27 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 28 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 29 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 30 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 31 -5.433595657348633, -4.184835910797119, -2.484982490539551 32 ], 33 'descriptor': {shape: [24], dataType: 'float32'}, 34 'constant': true 35 } 36 }, 37 'operators': [{ 38 'name': 'sigmoid', 39 'arguments': [{'input': 'sigmoidInput'}], 40 'outputs': 'sigmoidOutput' 41 }], 42 'expectedOutputs': { 43 'sigmoidOutput': { 44 'data': [ 45 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 46 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 47 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 48 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 49 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 50 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 51 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 52 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 53 ], 54 'descriptor': {shape: [24], dataType: 'float32'} 55 } 56 } 57 } 58 }, 59 { 60 'name': 'sigmoid float32 0D tensor', 61 'graph': { 62 'inputs': { 63 'sigmoidInput': { 64 'data': [-0.37699514627456665], 65 'descriptor': {shape: [], dataType: 'float32'} 66 } 67 }, 68 'operators': [{ 69 'name': 'sigmoid', 70 'arguments': [{'input': 'sigmoidInput'}], 71 'outputs': 'sigmoidOutput' 72 }], 73 'expectedOutputs': { 74 'sigmoidOutput': { 75 'data': [0.4068518280982971], 76 'descriptor': {shape: [], dataType: 'float32'} 77 } 78 } 79 } 80 }, 81 { 82 'name': 'sigmoid float32 1D tensor', 83 'graph': { 84 'inputs': { 85 'sigmoidInput': { 86 'data': [ 87 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 88 4.431885719299316, -0.93868488073349, 4.591195583343506, 89 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 90 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 91 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 92 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 93 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 94 -5.433595657348633, -4.184835910797119, -2.484982490539551 95 ], 96 'descriptor': {shape: [24], dataType: 'float32'} 97 } 98 }, 99 'operators': [{ 100 'name': 'sigmoid', 101 'arguments': [{'input': 'sigmoidInput'}], 102 'outputs': 'sigmoidOutput' 103 }], 104 'expectedOutputs': { 105 'sigmoidOutput': { 106 'data': [ 107 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 108 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 109 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 110 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 111 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 112 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 113 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 114 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 115 ], 116 'descriptor': {shape: [24], dataType: 'float32'} 117 } 118 } 119 } 120 }, 121 { 122 'name': 'sigmoid float32 2D tensor', 123 'graph': { 124 'inputs': { 125 'sigmoidInput': { 126 'data': [ 127 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 128 4.431885719299316, -0.93868488073349, 4.591195583343506, 129 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 130 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 131 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 132 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 133 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 134 -5.433595657348633, -4.184835910797119, -2.484982490539551 135 ], 136 'descriptor': {shape: [4, 6], dataType: 'float32'} 137 } 138 }, 139 'operators': [{ 140 'name': 'sigmoid', 141 'arguments': [{'input': 'sigmoidInput'}], 142 'outputs': 'sigmoidOutput' 143 }], 144 'expectedOutputs': { 145 'sigmoidOutput': { 146 'data': [ 147 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 148 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 149 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 150 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 151 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 152 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 153 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 154 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 155 ], 156 'descriptor': {shape: [4, 6], dataType: 'float32'} 157 } 158 } 159 } 160 }, 161 { 162 'name': 'sigmoid float32 3D tensor', 163 'graph': { 164 'inputs': { 165 'sigmoidInput': { 166 'data': [ 167 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 168 4.431885719299316, -0.93868488073349, 4.591195583343506, 169 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 170 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 171 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 172 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 173 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 174 -5.433595657348633, -4.184835910797119, -2.484982490539551 175 ], 176 'descriptor': {shape: [2, 3, 4], dataType: 'float32'} 177 } 178 }, 179 'operators': [{ 180 'name': 'sigmoid', 181 'arguments': [{'input': 'sigmoidInput'}], 182 'outputs': 'sigmoidOutput' 183 }], 184 'expectedOutputs': { 185 'sigmoidOutput': { 186 'data': [ 187 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 188 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 189 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 190 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 191 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 192 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 193 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 194 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 195 ], 196 'descriptor': {shape: [2, 3, 4], dataType: 'float32'} 197 } 198 } 199 } 200 }, 201 { 202 'name': 'sigmoid float32 4D tensor', 203 'graph': { 204 'inputs': { 205 'sigmoidInput': { 206 'data': [ 207 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 208 4.431885719299316, -0.93868488073349, 4.591195583343506, 209 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 210 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 211 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 212 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 213 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 214 -5.433595657348633, -4.184835910797119, -2.484982490539551 215 ], 216 'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'} 217 } 218 }, 219 'operators': [{ 220 'name': 'sigmoid', 221 'arguments': [{'input': 'sigmoidInput'}], 222 'outputs': 'sigmoidOutput' 223 }], 224 'expectedOutputs': { 225 'sigmoidOutput': { 226 'data': [ 227 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 228 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 229 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 230 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 231 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 232 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 233 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 234 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 235 ], 236 'descriptor': {shape: [2, 2, 2, 3], dataType: 'float32'} 237 } 238 } 239 } 240 }, 241 { 242 'name': 'sigmoid float32 5D tensor', 243 'graph': { 244 'inputs': { 245 'sigmoidInput': { 246 'data': [ 247 -0.37699514627456665, -0.6848450899124146, -3.5469970703125, 248 4.431885719299316, -0.93868488073349, 4.591195583343506, 249 -2.5067026615142822, 1.5669522285461426, -2.596473217010498, 250 -3.64729380607605, 2.6785237789154053, -3.1051602363586426, 251 2.2585017681121826, -0.2865157723426819, 4.64043664932251, 252 1.0606156587600708, -3.536252498626709, 0.4410440921783447, 253 4.791460037231445, 2.0745489597320557, 0.8354471325874329, 254 -5.433595657348633, -4.184835910797119, -2.484982490539551 255 ], 256 'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'} 257 } 258 }, 259 'operators': [{ 260 'name': 'sigmoid', 261 'arguments': [{'input': 'sigmoidInput'}], 262 'outputs': 'sigmoidOutput' 263 }], 264 'expectedOutputs': { 265 'sigmoidOutput': { 266 'data': [ 267 0.4068518280982971, 0.33518078923225403, 0.028004197403788567, 268 0.9882476925849915, 0.28116607666015625, 0.9899610877037048, 269 0.07538963109254837, 0.8273487091064453, 0.0693657398223877, 270 0.02539960853755474, 0.9357474446296692, 0.04289489984512329, 271 0.9053813815116882, 0.42885708808898926, 0.9904388189315796, 272 0.7428081631660461, 0.0282981526106596, 0.6085078120231628, 273 0.9917680025100708, 0.8884047269821167, 0.6975054740905762, 274 0.004348373040556908, 0.014996387995779514, 0.07691769301891327 275 ], 276 'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float32'} 277 } 278 } 279 } 280 }, 281 282 // float16 tests 283 { 284 'name': 'sigmoid float16 1D constant tensor', 285 'graph': { 286 'inputs': { 287 'sigmoidInput': { 288 'data': [ 289 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 290 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 291 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 292 2.2578125, -0.28662109375, 4.640625, 1.060546875, 293 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 294 0.83544921875, -5.43359375, -4.18359375, -2.484375 295 ], 296 'descriptor': {shape: [24], dataType: 'float16'}, 297 'constant': true 298 } 299 }, 300 'operators': [{ 301 'name': 'sigmoid', 302 'arguments': [{'input': 'sigmoidInput'}], 303 'outputs': 'sigmoidOutput' 304 }], 305 'expectedOutputs': { 306 'sigmoidOutput': { 307 'data': [ 308 0.406982421875, 309 0.335205078125, 310 0.00250244140625, 311 0.98828125, 312 0.28125, 313 0.98974609375, 314 0.075439453125, 315 0.82763671875, 316 0.06939697265625, 317 0.343505859375, 318 0.935546875, 319 0.042877197265625, 320 0.9052734375, 321 0.4287109375, 322 0.990234375, 323 0.74267578125, 324 0.0282745361328125, 325 0.6083984375, 326 0.99169921875, 327 0.88818359375, 328 0.697265625, 329 0.0043487548828125, 330 0.0150146484375, 331 0.07696533203125 332 ], 333 'descriptor': {shape: [24], dataType: 'float16'} 334 } 335 } 336 } 337 }, 338 { 339 'name': 'sigmoid float16 0D tensor', 340 'graph': { 341 'inputs': { 342 'sigmoidInput': { 343 'data': [-0.376953125], 344 'descriptor': {shape: [], dataType: 'float16'} 345 } 346 }, 347 'operators': [{ 348 'name': 'sigmoid', 349 'arguments': [{'input': 'sigmoidInput'}], 350 'outputs': 'sigmoidOutput' 351 }], 352 'expectedOutputs': { 353 'sigmoidOutput': { 354 'data': [0.406982421875], 355 'descriptor': {shape: [], dataType: 'float16'} 356 } 357 } 358 } 359 }, 360 { 361 'name': 'sigmoid float16 1D tensor', 362 'graph': { 363 'inputs': { 364 'sigmoidInput': { 365 'data': [ 366 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 367 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 368 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 369 2.2578125, -0.28662109375, 4.640625, 1.060546875, 370 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 371 0.83544921875, -5.43359375, -4.18359375, -2.484375 372 ], 373 'descriptor': {shape: [24], dataType: 'float16'} 374 } 375 }, 376 'operators': [{ 377 'name': 'sigmoid', 378 'arguments': [{'input': 'sigmoidInput'}], 379 'outputs': 'sigmoidOutput' 380 }], 381 'expectedOutputs': { 382 'sigmoidOutput': { 383 'data': [ 384 0.406982421875, 385 0.335205078125, 386 0.00250244140625, 387 0.98828125, 388 0.28125, 389 0.98974609375, 390 0.075439453125, 391 0.82763671875, 392 0.06939697265625, 393 0.343505859375, 394 0.935546875, 395 0.042877197265625, 396 0.9052734375, 397 0.4287109375, 398 0.990234375, 399 0.74267578125, 400 0.0282745361328125, 401 0.6083984375, 402 0.99169921875, 403 0.88818359375, 404 0.697265625, 405 0.0043487548828125, 406 0.0150146484375, 407 0.07696533203125 408 ], 409 'descriptor': {shape: [24], dataType: 'float16'} 410 } 411 } 412 } 413 }, 414 { 415 'name': 'sigmoid float16 2D tensor', 416 'graph': { 417 'inputs': { 418 'sigmoidInput': { 419 'data': [ 420 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 421 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 422 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 423 2.2578125, -0.28662109375, 4.640625, 1.060546875, 424 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 425 0.83544921875, -5.43359375, -4.18359375, -2.484375 426 ], 427 'descriptor': {shape: [4, 6], dataType: 'float16'} 428 } 429 }, 430 'operators': [{ 431 'name': 'sigmoid', 432 'arguments': [{'input': 'sigmoidInput'}], 433 'outputs': 'sigmoidOutput' 434 }], 435 'expectedOutputs': { 436 'sigmoidOutput': { 437 'data': [ 438 0.406982421875, 439 0.335205078125, 440 0.00250244140625, 441 0.98828125, 442 0.28125, 443 0.98974609375, 444 0.075439453125, 445 0.82763671875, 446 0.06939697265625, 447 0.343505859375, 448 0.935546875, 449 0.042877197265625, 450 0.9052734375, 451 0.4287109375, 452 0.990234375, 453 0.74267578125, 454 0.0282745361328125, 455 0.6083984375, 456 0.99169921875, 457 0.88818359375, 458 0.697265625, 459 0.0043487548828125, 460 0.0150146484375, 461 0.07696533203125 462 ], 463 'descriptor': {shape: [4, 6], dataType: 'float16'} 464 } 465 } 466 } 467 }, 468 { 469 'name': 'sigmoid float16 3D tensor', 470 'graph': { 471 'inputs': { 472 'sigmoidInput': { 473 'data': [ 474 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 475 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 476 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 477 2.2578125, -0.28662109375, 4.640625, 1.060546875, 478 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 479 0.83544921875, -5.43359375, -4.18359375, -2.484375 480 ], 481 'descriptor': {shape: [2, 3, 4], dataType: 'float16'} 482 } 483 }, 484 'operators': [{ 485 'name': 'sigmoid', 486 'arguments': [{'input': 'sigmoidInput'}], 487 'outputs': 'sigmoidOutput' 488 }], 489 'expectedOutputs': { 490 'sigmoidOutput': { 491 'data': [ 492 0.406982421875, 493 0.335205078125, 494 0.00250244140625, 495 0.98828125, 496 0.28125, 497 0.98974609375, 498 0.075439453125, 499 0.82763671875, 500 0.06939697265625, 501 0.343505859375, 502 0.935546875, 503 0.042877197265625, 504 0.9052734375, 505 0.4287109375, 506 0.990234375, 507 0.74267578125, 508 0.0282745361328125, 509 0.6083984375, 510 0.99169921875, 511 0.88818359375, 512 0.697265625, 513 0.0043487548828125, 514 0.0150146484375, 515 0.07696533203125 516 ], 517 'descriptor': {shape: [2, 3, 4], dataType: 'float16'} 518 } 519 } 520 } 521 }, 522 { 523 'name': 'sigmoid float16 4D tensor', 524 'graph': { 525 'inputs': { 526 'sigmoidInput': { 527 'data': [ 528 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 529 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 530 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 531 2.2578125, -0.28662109375, 4.640625, 1.060546875, 532 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 533 0.83544921875, -5.43359375, -4.18359375, -2.484375 534 ], 535 'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'} 536 } 537 }, 538 'operators': [{ 539 'name': 'sigmoid', 540 'arguments': [{'input': 'sigmoidInput'}], 541 'outputs': 'sigmoidOutput' 542 }], 543 'expectedOutputs': { 544 'sigmoidOutput': { 545 'data': [ 546 0.406982421875, 547 0.335205078125, 548 0.00250244140625, 549 0.98828125, 550 0.28125, 551 0.98974609375, 552 0.075439453125, 553 0.82763671875, 554 0.06939697265625, 555 0.343505859375, 556 0.935546875, 557 0.042877197265625, 558 0.9052734375, 559 0.4287109375, 560 0.990234375, 561 0.74267578125, 562 0.0282745361328125, 563 0.6083984375, 564 0.99169921875, 565 0.88818359375, 566 0.697265625, 567 0.0043487548828125, 568 0.0150146484375, 569 0.07696533203125 570 ], 571 'descriptor': {shape: [2, 2, 2, 3], dataType: 'float16'} 572 } 573 } 574 } 575 }, 576 { 577 'name': 'sigmoid float16 5D tensor', 578 'graph': { 579 'inputs': { 580 'sigmoidInput': { 581 'data': [ 582 -0.376953125, -0.68505859375, -5.98828125, 4.43359375, 583 -0.9384765625, 4.58984375, -2.505859375, 1.5673828125, 584 -2.595703125, -0.6474609375, 2.677734375, -3.10546875, 585 2.2578125, -0.28662109375, 4.640625, 1.060546875, 586 -3.537109375, 0.441162109375, 4.79296875, 2.07421875, 587 0.83544921875, -5.43359375, -4.18359375, -2.484375 588 ], 589 'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'} 590 } 591 }, 592 'operators': [{ 593 'name': 'sigmoid', 594 'arguments': [{'input': 'sigmoidInput'}], 595 'outputs': 'sigmoidOutput' 596 }], 597 'expectedOutputs': { 598 'sigmoidOutput': { 599 'data': [ 600 0.406982421875, 601 0.335205078125, 602 0.00250244140625, 603 0.98828125, 604 0.28125, 605 0.98974609375, 606 0.075439453125, 607 0.82763671875, 608 0.06939697265625, 609 0.343505859375, 610 0.935546875, 611 0.042877197265625, 612 0.9052734375, 613 0.4287109375, 614 0.990234375, 615 0.74267578125, 616 0.0282745361328125, 617 0.6083984375, 618 0.99169921875, 619 0.88818359375, 620 0.697265625, 621 0.0043487548828125, 622 0.0150146484375, 623 0.07696533203125 624 ], 625 'descriptor': {shape: [2, 1, 4, 1, 3], dataType: 'float16'} 626 } 627 } 628 } 629 } 630 ]; 631 632 webnn_conformance_test( 633 sigmoidTests, buildAndExecuteGraph, getPrecisionTolerance);