There is not a getWeightsName API, so we need to use WeightsRole.
| 1416 | |
| 1417 | // There is not a getWeightsName API, so we need to use WeightsRole. |
| 1418 | std::vector<std::pair<WeightsRole, Weights>> getAllRefitWeightsForLayer(const ILayer& l) |
| 1419 | { |
| 1420 | switch (l.getType()) |
| 1421 | { |
| 1422 | case LayerType::kCONSTANT: |
| 1423 | { |
| 1424 | auto const& layer = static_cast<const nvinfer1::IConstantLayer&>(l); |
| 1425 | auto const weights = layer.getWeights(); |
| 1426 | switch (weights.type) |
| 1427 | { |
| 1428 | case DataType::kFLOAT: |
| 1429 | case DataType::kHALF: |
| 1430 | case DataType::kINT8: |
| 1431 | case DataType::kINT32: return {std::make_pair(WeightsRole::kCONSTANT, weights)}; |
| 1432 | case DataType::kBOOL: |
| 1433 | case DataType::kUINT8: |
| 1434 | case DataType::kFP8: |
| 1435 | // Refit not supported for these types. |
| 1436 | break; |
| 1437 | } |
| 1438 | break; |
| 1439 | } |
| 1440 | case LayerType::kCONVOLUTION: |
| 1441 | { |
| 1442 | auto const& layer = static_cast<const nvinfer1::IConvolutionLayer&>(l); |
| 1443 | return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()), |
| 1444 | std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())}; |
| 1445 | } |
| 1446 | case LayerType::kDECONVOLUTION: |
| 1447 | { |
| 1448 | auto const& layer = static_cast<const nvinfer1::IDeconvolutionLayer&>(l); |
| 1449 | return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()), |
| 1450 | std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())}; |
| 1451 | } |
| 1452 | case LayerType::kFULLY_CONNECTED: |
| 1453 | { |
| 1454 | auto const& layer = static_cast<const nvinfer1::IFullyConnectedLayer&>(l); |
| 1455 | return {std::make_pair(WeightsRole::kKERNEL, layer.getKernelWeights()), |
| 1456 | std::make_pair(WeightsRole::kBIAS, layer.getBiasWeights())}; |
| 1457 | } |
| 1458 | case LayerType::kSCALE: |
| 1459 | { |
| 1460 | auto const& layer = static_cast<const nvinfer1::IScaleLayer&>(l); |
| 1461 | return {std::make_pair(WeightsRole::kSCALE, layer.getScale()), |
| 1462 | std::make_pair(WeightsRole::kSHIFT, layer.getShift())}; |
| 1463 | } |
| 1464 | case LayerType::kACTIVATION: |
| 1465 | case LayerType::kASSERTION: |
| 1466 | case LayerType::kCAST: |
| 1467 | case LayerType::kCONCATENATION: |
| 1468 | case LayerType::kCONDITION: |
| 1469 | case LayerType::kCONDITIONAL_INPUT: |
| 1470 | case LayerType::kCONDITIONAL_OUTPUT: |
| 1471 | case LayerType::kDEQUANTIZE: |
| 1472 | case LayerType::kEINSUM: |
| 1473 | case LayerType::kELEMENTWISE: |
| 1474 | case LayerType::kFILL: |
| 1475 | case LayerType::kGATHER: |
no test coverage detected