At the very core of CNTK is the compute graph which is fully elaborated into the sequence of steps performed in a deep neural network training. Each CNTK compute graph is comprised of a set of nodes where each node represents a key mathematical operation. The edges between nodes in the graph represent data flow between operations. This representation allows CNTK to efficiently schedule computation on the underlying hardware of your choosing. CNTK also dynamically analyzes the graph to optimize both latency and efficient use of resources. CNTK also calculates the needed derivatives in order to efficiently learn the network parameters.