{
 "id": "epaf17xn84",
 "slug": "class-activation-mapping",
 "title": "Class activation mapping",
 "updated": "2026-10-15",
 "topic_path": [
  {
   "id": "technology",
   "label": "Technology and the built world",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology"
  },
  {
   "id": "technology.computing",
   "label": "Computing and digital systems",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing"
  },
  {
   "id": "technology.computing.ai",
   "label": "Artificial intelligence and data",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai"
  },
  {
   "id": "technology.computing.ai.ml_computation",
   "label": "Machine learning and neural computation",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai.ml_computation"
  },
  {
   "id": "technology.computing.ai.neural_deep",
   "label": "Neural networks and deep learning",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai.neural_deep"
  },
  {
   "id": "technology.computing.ai.neural_deep.alpha-a-to-h",
   "label": "Titles A to H",
   "api_url": "https://www.edgepedia.org/api/v1/topics/technology.computing.ai.neural_deep.alpha-a-to-h"
  }
 ],
 "geo": [
  {
   "id": "geo.nongeo.t2001.technology.computing.ai.neural_deep",
   "label": "Non-geographic · 2001 to 2020: Neural networks and deep learning",
   "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology.computing.ai.neural_deep",
   "path": [
    {
     "id": "geo.nongeo",
     "label": "Non-geographic",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo"
    },
    {
     "id": "geo.nongeo.t2001",
     "label": "Non-geographic · 2001 to 2020",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001"
    },
    {
     "id": "geo.nongeo.t2001.technology",
     "label": "Technology and the built world",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology"
    },
    {
     "id": "geo.nongeo.t2001.technology.computing",
     "label": "Computing and digital systems",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology.computing"
    },
    {
     "id": "geo.nongeo.t2001.technology.computing.ai",
     "label": "Artificial intelligence and data",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology.computing.ai"
    },
    {
     "id": "geo.nongeo.t2001.technology.computing.ai.ml_computation",
     "label": "Machine learning and neural computation",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology.computing.ai.ml_computation"
    },
    {
     "id": "geo.nongeo.t2001.technology.computing.ai.neural_deep",
     "label": "Neural networks and deep learning",
     "api_url": "https://www.edgepedia.org/api/v1/geo/geo.nongeo.t2001.technology.computing.ai.neural_deep"
    }
   ]
  }
 ],
 "excerpt": "Class activation mapping (CAM) is a visualization technique for convolutional neural networks, introduced by Bolei Zhou and colleagues in 2016, that produces heatmaps highlighting image regions driving a prediction.",
 "snippet": "Class activation mapping (CAM) is a visualization technique for convolutional neural networks, introduced by Bolei Zhou and colleagues in 2016, that produces heatmaps highlighting image regions driving a prediction.",
 "node": "technology.computing.ai.neural_deep.alpha-a-to-h",
 "markdown": "# Class activation mapping\n\nA class activation map (CAM) is a visualization technique for convolutional neural networks that produces a heatmap over the input image, highlighting the regions most influential in the network's prediction of a given class. Because the map is derived directly from the network's own weights, a classification network can be turned into an object localizer without any bounding-box annotation, which made CAM a foundational tool for both model interpretability and weakly supervised localization.\n\n| Key | Value |\n|---|---|\n| Introduced by | B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba, \"Learning Deep Features for Discriminative Localization\", CVPR 2016 (arXiv:1512.04150, 2015) <sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> |\n| Core mechanism | Class score is a weighted sum of globally averaged last-convolutional feature maps, so the softmax layer's weights projected onto the un-pooled maps give the heatmap with no extra training <sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> |\n| Architectural requirement | Feature maps must directly precede the softmax through global average pooling; networks ending in multiple fully connected layers (AlexNet, VGG-16, VGG-19) cannot use it <sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup><sup> • </sup><sup>[3](https://www.mathworks.com/help/deeplearning/ug/investigate-network-predictions-using-class-activation-mapping.html)</sup> |\n| Map resolution | 13×13 for modified AlexNet, 14×14 for modified VGGnet, and 7×7 for modified GoogLeNet; upsampled by interpolation for overlay <sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> |\n| Headline result | GoogLeNet-GAP reached 37.1% top-5 localization error on ILSVRC 2014 in a weakly supervised setting, close to the 34.2% of fully supervised AlexNet <sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> |\n| Best-known variant | Grad-CAM, a strict generalization of CAM that uses gradients instead of classification-layer weights and needs no architectural change <sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup> |\n\n## How it works\n\nThe technique exploits the structure of a network that ends in global average pooling (GAP). With GAP, each feature map \\( F_{k} \\) from the last convolutional layer is reduced to a single number by averaging over all \\( Z \\) spatial positions, and the class logit for class \\( c \\) is a weighted sum of these averages:\n\n\\[ z_{c} = b_{c} + \\sum_{k} w_{ck} \\cdot F_{k}, \\qquad F_{k} = \\frac{1}{Z} \\sum_{x,y} f_{k}(x,y) \\]\n\nBecause the same weights \\( w_{ck} \\) connect the pooled maps to the softmax, projecting them back onto the un-pooled maps defines the class activation map:\n\n\\[ M_{c}(x,y) = \\sum_{k} w_{ck}\\, f_{k}(x,y) \\]\n\nso that \\( z_{c} = b_{c} + \\frac{1}{Z} \\sum_{x,y} M_{c}(x,y) \\). Each pixel of the map therefore directly indicates the importance of the activation at that spatial grid position for classifying the image as class \\( c \\).<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> The softmax bias is set to 0 because it has little effect on the map.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> In practice, the weights used are those of the final fully connected layer for the predicted class, applied to the ReLU activations following the last convolutional layer.<sup>[3](https://www.mathworks.com/help/deeplearning/ug/investigate-network-predictions-using-class-activation-mapping.html)</sup> No extra training is needed to obtain the map.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup>\n\n## How it is done\n\nGenerating a CAM from a trained network takes four steps:\n\n1. **Use a GAP-ending network.** The last convolutional feature maps must feed a global average pooling layer, followed by a [linear classifier](https://www.edgepedia.org/linear-classifier) producing class logits and then the softmax, with no intervening nonlinear hidden fully connected layers. Modern architectures such as ResNet, DenseNet, SqueezeNet, and [Inception](https://www.edgepedia.org/inception) already have this structure, so the heatmap can be generated without modifying the network.<sup>[4](https://github.com/zhoubolei/CAM/blob/master/README.md)</sup>\n2. **Extract activations and weights.** Take the last-convolutional activation maps \\( A_{k}(x,y) \\) and the fully connected layer's weights \\( w_{k}^{(c)} \\) for the class of interest.<sup>[5](https://github.com/frgfm/torch-cam/blob/master/torchcam/methods/activation.py)</sup>\n3. **Compute the weighted sum.** The map is \\( L^{(c)}_{\\text{CAM}}(x,y) = \\text{ReLU}\\big(\\sum_{k} w_{k}^{(c)} A_{k}(x,y)\\big) \\).<sup>[5](https://github.com/frgfm/torch-cam/blob/master/torchcam/methods/activation.py)</sup>\n4. **Threshold, upsample, and overlay.** For weakly supervised bounding boxes, the original work segments regions above 20% of the map's maximum value and takes the bounding box covering the largest connected component.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> The map is at the resolution of the last convolutional layer, 13×13 for modified AlexNet, 14×14 for modified VGGnet, and 7×7 for modified [GoogLeNet](https://www.edgepedia.org/googlenet), and is upsampled by interpolation to the image size.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup>\n\n## Origin\n\nClass activation mapping was introduced by Bolei Zhou and colleagues in \"Learning Deep Features for Discriminative Localization\", released on arXiv in 2015 and published at CVPR 2016.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> The method built on earlier gradient-based visualization work, Simonyan, Vedaldi, and Zisserman's image-specific class [saliency maps](https://www.edgepedia.org/saliency-map) of 2013 on arXiv.<sup>[6](https://doi.org/10.48550/arxiv.1312.6034)</sup> The authors released official Caffe pre-trained models (GoogLeNet-CAM and VGG16-CAM on ImageNet, GoogLeNet-CAM on Places205, and AlexNet+-CAM) with PyTorch demo code, and released the technique and models for unrestricted use.<sup>[4](https://github.com/zhoubolei/CAM/blob/master/README.md)</sup>\n\n## Variants\n\nThe general CAM formulation is \\( \\text{CAM}_{c}(x) = \\text{ReLU}\\big(\\sum_{k=1}^{N_{l}} \\alpha_{k} \\cdot A_{k}\\big) \\), where \\( A_{k} \\) is the \\( k \\)-th activation channel and \\( \\alpha_{k} \\) its importance for the target class; variants differ in how \\( \\alpha_{k} \\) is obtained.<sup>[7](https://openaccess.thecvf.com/content/CVPR2021W/RCV/papers/Poppi_Revisiting_the_Evaluation_of_Class_Activation_Mapping_for_Explainability_A_CVPRW_2021_paper.pdf)</sup>\n\n**Grad-CAM**, by Selvaraju and colleagues, replaces the classification-layer weights with global-average-pooled gradients of the class score, \\( L^{c}_{\\text{Grad-CAM}} = \\text{ReLU}(\\sum_{k} \\alpha_{k}^{c} \\cdot A^{k}) \\), requiring no architectural change or retraining.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup><sup> • </sup><sup>[8](https://doi.org/10.48550/arxiv.1610.02391)</sup> It is a strict generalization of CAM: the CAM weight \\( w_{k}^{c} \\) equals \\( \\alpha_{k}^{c} \\) up to a normalized constant, so for fully convolutional architectures CAM is a special case of Grad-CAM.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup>\n\n**Grad-CAM++**, by Chattopadhyay, Sarkar, Howlader, and Balasubramanian, uses a weighted combination of the positive partial derivatives of the class score with respect to the last-convolutional feature-map activations, improving localization of multiple object instances and full-object coverage.<sup>[9](https://doi.org/10.48550/arxiv.1710.11063)</sup>\n\n**Gradient-free variants.** Score-CAM, by Wang and colleagues, replaces the FC weights with score-based weights computed by masking the input with each normalized, upsampled activation and measuring the resulting class-score increase against a baseline <sup>[5](https://github.com/frgfm/torch-cam/blob/master/torchcam/methods/activation.py)</sup><sup> • </sup><sup>[10](https://doi.org/10.48550/arxiv.1910.01279)</sup>; SS-CAM smooths these weights over noisy Gaussian samples and IS-CAM uses integrated score weights.<sup>[5](https://github.com/frgfm/torch-cam/blob/master/torchcam/methods/activation.py)</sup>\n\n**Faithfulness-oriented variants.** HiResCAM, by Draelos and Carin, enhances Grad-CAM by using a [Hadamard product](https://www.edgepedia.org/hadamard-product-matrices) of the gradient and activation tensors, and has outperformed Grad-CAM in medical domains such as CT pulmonary anomaly localization, where Grad-CAM focused on irrelevant anatomical regions.<sup>[11](https://www.thieme-connect.com/products/ejournals/pdf/10.1055/a-2562-2163.pdf)</sup><sup> • </sup><sup>[12](https://doi.org/10.48550/arxiv.2011.08891)</sup> F-CAM, by Belharbi and colleagues, targets full-resolution maps via guided parametric upscaling.<sup>[13](https://doi.org/10.48550/arxiv.2109.07069)</sup> A method-centered review also catalogs LayerCAM, Relevance-CAM, and LIFT-CAM, among many others, and finds the field shifting toward comparative, multi-layer, probabilistic, and foundation-model-aware explanations.<sup>[14](https://arxiv.org/pdf/2608.12299.pdf)</sup>\n\n## Applications\n\n**Weakly supervised object localization** was the original application: GoogLeNet-GAP with a bounding-box heuristic achieved 37.1% top-5 error on the ILSVRC 2014 test set, close to the 34.2% of fully supervised AlexNet, all without any bounding-box annotation.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> Later refined methods build on the same idea; GRCAM, for example, uses gradients of the classification loss and of a regression function to mine entire object regions, evaluated on ILSVRC and CUB-200-2011.<sup>[15](https://www.sciencedirect.com/science/article/abs/pii/S0031320322001455)</sup>\n\n**Medical imaging** is a major domain. In a thoraco-lumbar X-ray fracture detection task, HiResCAM was selected as the best-performing CAM variant over Grad-CAM, Grad-CAM++, XGrad-CAM, and LayerCAM using the ROAD metric.<sup>[11](https://www.thieme-connect.com/products/ejournals/pdf/10.1055/a-2562-2163.pdf)</sup> On the RSNA pneumothorax dataset with bounding-box ground truth, DiffCAM achieved the highest AUPRC among seven compared methods, with GradCAM described as very robust on medical applications.<sup>[16](https://openaccess.thecvf.com/content/CVPR2025/papers/Li_DiffCAM_Data-Driven_Saliency_Maps_by_Capturing_Feature_Differences_CVPR_2025_paper.pdf)</sup> CAMs also serve for model debugging, exposing which image regions drive a prediction.<sup>[4](https://github.com/zhoubolei/CAM/blob/master/README.md)</sup>\n\n## Limitations and alternatives\n\n**Architectural constraint.** CAM requires feature maps to directly precede softmax layers (convolutional feature maps, then GAP, then softmax), limiting it to specific architectures that may achieve inferior accuracies on some tasks.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup> Networks ending in multiple fully connected layers, such as AlexNet, VGG-16, and VGG-19, cannot use it, while SqueezeNet, GoogLeNet, ResNet-18, and MobileNet-v2 work; SqueezeNet's map has four times higher resolution than the others.<sup>[3](https://www.mathworks.com/help/deeplearning/ug/investigate-network-predictions-using-class-activation-mapping.html)</sup> In the original formulation, removing the fully connected layers cut VGGnet parameters by about 90% but cost 1–2% classification accuracy, largely compensated by adding a 3×3, stride-1, pad-1 convolutional layer with 1024 units before GAP.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup> Grad-CAM for VGG-16 achieved better top-1 localization error than CAM, which requires architecture change and retraining and suffers 2.98% worse top-1 classification error.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup>\n\n**Resolution and pooling bias.** CAMs are coarse, at the resolution of the final convolutional feature maps (14×14 for VGG and AlexNet), and upsampling is by interpolation.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup><sup> • </sup><sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup> GAP loss encourages the network to identify the extent of the object, whereas global max pooling encourages identifying just one discriminative part; GAP outperforms GMP for localization at similar classification performance.<sup>[1](https://doi.org/10.48550/arxiv.1512.04150)</sup>\n\n**Failure modes.** Grad-CAM fails to properly localize objects when an image contains multiple occurrences of the same class, which Grad-CAM++ addresses.<sup>[9](https://doi.org/10.48550/arxiv.1710.11063)</sup> In fine-grained recognition, CAM fails by explaining all features supporting the target class, including those shared with similar classes; Finer-CAM instead compares the target class with similar reference classes and explains the logit difference.<sup>[14](https://arxiv.org/pdf/2608.12299.pdf)</sup>\n\n**Faithfulness and evaluation.** Whether highlighted regions genuinely explain a prediction has been tested quantitatively, with sobering results. Against occlusion as a faithfulness reference on the PASCAL 2007 validation set, Guided Grad-CAM achieved rank correlations of 0.254 and 0.261, versus 0.168, 0.220, and 0.208 for Guided Backpropagation, c-MWP, and CAM respectively.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup> A trivial Fake-CAM control, which highlights essentially nothing, achieved far better Average Drop and Average Increase than real methods such as Grad-CAM, Grad-CAM++, and Score-CAM, showing that confidence-based metrics can be gamed.<sup>[7](https://openaccess.thecvf.com/content/CVPR2021W/RCV/papers/Poppi_Revisiting_the_Evaluation_of_Class_Activation_Mapping_for_Explainability_A_CVPRW_2021_paper.pdf)</sup> In weakly supervised localization, a benchmark found that the five most recent WSOL methods made no major improvement over the CAM baseline, and reported state-of-the-art gains over CAM were partly illusory, caused by hyperparameter tuning with full supervision.<sup>[17](https://ar5iv.labs.arxiv.org/html/2001.07437)</sup> A further faithfulness trap is background reliance: causal and debiasing methods (CI-CAM, C-CAM, Debiased-CAM) show that a map can overlap an object yet be unfaithful if the model actually relied on background context.<sup>[14](https://arxiv.org/pdf/2608.12299.pdf)</sup>\n\n**Alternatives.** Grad-CAM requires only a single forward and a partial backward pass per image, making it typically an order of magnitude more efficient than perturbation-based localization approaches such as occlusion.<sup>[2](https://link.springer.com/article/10.1007/s11263-019-01228-7)</sup> LIFT-CAM offers a SHAP-like approximation built on DeepLIFT.<sup>[14](https://arxiv.org/pdf/2608.12299.pdf)</sup>\n\n## References\n\n1. [Zhou, Bolei and colleagues (2015). Learning Deep Features for Discriminative Localization. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1512.04150)\n2. [Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization (IJCV journal version)](https://link.springer.com/article/10.1007/s11263-019-01228-7)\n3. [Investigate Network Predictions Using Class Activation Mapping (MathWorks documentation)](https://www.mathworks.com/help/deeplearning/ug/investigate-network-predictions-using-class-activation-mapping.html)\n4. [zhoubolei/CAM, official code repository](https://github.com/zhoubolei/CAM/blob/master/README.md)\n5. [torch-cam activation.py (CAM, ScoreCAM, SS-CAM, IS-CAM implementations)](https://github.com/frgfm/torch-cam/blob/master/torchcam/methods/activation.py)\n6. [Simonyan, Karen, Vedaldi, Andrea, Zisserman, Andrew (2013). Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1312.6034)\n7. [Revisiting the Evaluation of Class Activation Mapping for Explainability: A Novel Metric and Experimental Analysis](https://openaccess.thecvf.com/content/CVPR2021W/RCV/papers/Poppi_Revisiting_the_Evaluation_of_Class_Activation_Mapping_for_Explainability_A_CVPRW_2021_paper.pdf)\n8. [Selvaraju, Ramprasaath R. and colleagues (2016). Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1610.02391)\n9. [Chattopadhyay, Aditya and colleagues (2017). Grad-CAM++: Improved Visual Explanations for Deep Convolutional Networks. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1710.11063)\n10. [Wang, Haofan and colleagues (2019). Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.1910.01279)\n11. [Alternative Strategies to Generate Class Activation Maps (fracture detection X-ray study)](https://www.thieme-connect.com/products/ejournals/pdf/10.1055/a-2562-2163.pdf)\n12. [Draelos, Rachel Lea, Carin, Lawrence (2020). Use HiResCAM instead of Grad-CAM for faithful explanations of convolutional neural networks. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.2011.08891)\n13. [Belharbi, Soufiane and colleagues (2021). F-CAM: Full Resolution Class Activation Maps via Guided Parametric Upscaling. arXiv (Cornell University).](https://doi.org/10.48550/arxiv.2109.07069)\n14. [Class Activation Mapping in Explainable Computer Vision: A Method-Centered Review of CNN, Transformer, and Foundation-Model-Era Visual Explanations](https://arxiv.org/pdf/2608.12299.pdf)\n15. [Gradient-based refined class activation map for weakly supervised object localization (Pattern Recognition)](https://www.sciencedirect.com/science/article/abs/pii/S0031320322001455)\n16. [DiffCAM: Data-Driven Saliency Maps by Capturing Feature Differences (CVPR 2025)](https://openaccess.thecvf.com/content/CVPR2025/papers/Li_DiffCAM_Data-Driven_Saliency_Maps_by_Capturing_Feature_Differences_CVPR_2025_paper.pdf)\n17. [Evaluating Weakly Supervised Object Localization Methods Right](https://ar5iv.labs.arxiv.org/html/2001.07437)\n\n---\n*Topic: Encyclopedia › Technology and the built world › Computing and digital systems › Artificial intelligence and data › Machine learning and neural computation › Neural networks and deep learning › Titles A to H*\n\n*Initially written Sep 29, 2026 · Edited: Oct 15, 2026*\n\n*Copyright 2026 EdgeChat AI, a subsidiary of Biostate AI.*\n\nLicense: Edgepedia Community License 1.0, https://www.edgepedia.org/edgepedia/license\n",
 "same_as": [],
 "url": "https://www.edgepedia.org/class-activation-mapping",
 "markdown_url": "https://www.edgepedia.org/class-activation-mapping.md",
 "license": {
  "name": "Edgepedia Community License 1.0",
  "url": "https://www.edgepedia.org/edgepedia/license",
  "summary": "Free with credit, commercial use included. AI training is open to everyone. For other uses, organizations over USD 100M in revenue or 100M monthly users license separately.",
  "spdx": "LicenseRef-Edgepedia-Community-1.0"
 },
 "credit": "\"Class activation mapping\", Edgepedia (EdgeChat), https://www.edgepedia.org/class-activation-mapping. Edgepedia Community License 1.0.",
 "credit_md": "\"[Class activation mapping](https://www.edgepedia.org/class-activation-mapping)\", Edgepedia (EdgeChat), [https://www.edgepedia.org/class-activation-mapping](https://www.edgepedia.org/class-activation-mapping). [Edgepedia Community License 1.0](https://www.edgepedia.org/edgepedia/license).",
 "credit_html": "\"<a href=\"https://www.edgepedia.org/class-activation-mapping\">Class activation mapping</a>\", Edgepedia (EdgeChat), <a href=\"https://www.edgepedia.org/class-activation-mapping\">https://www.edgepedia.org/class-activation-mapping</a>. <a href=\"https://www.edgepedia.org/edgepedia/license\">Edgepedia Community License 1.0</a>.",
 "speakable": "Class activation mapping is a visualization technique for convolutional neural networks, introduced by Bolei Zhou and colleagues in 2016, that produces heatmaps highlighting image regions driving a prediction."
}
