مساله ای که معمولا در استفاده از تنسورفلو و حتی تیانو وجود دارد این است که ما نمی دانیم این دو دقیقا دقیقا چه هستند! مساله ای که معمولا مارا مجبور به استفاده ار ابزارهای سطح بالاتر مثل کراس می کند. این کتابخانه ها خودشان را به عنوان ابزارهایی برای پیاده سازی الگوریتم های یادگیری عمیق معرفی کردند. اما درواقع مفاهیم پشت صحنه این دو ابزار مفاهیمی مستقل از یادگیری عمیق است. مفهومی که در عین سادگی پیچیده ترین ساختارهای محاسباتی را برای ما تولید می کند. گراف محاسباتی۱ مفهوم پایه برای این دو ابزار قدرتمند است. گراف محاسباتی شبیه درخت های پیشوندی و پسوندی(برای عملیات ریاضی) است با این تفاوت که الزاما ساختار به صورت درخت نیست. مثلا عبارت های زیر در نظر بگیرید:

c = a + b
d = b + 1
e = c * d


گراف محاسباتی برای این عبارات به شکل زیر است:


اگر مقدار a برابر ۲ و مقدار b برابر ۱ باشد گراف محاسباتی به صورت زیر در می آید که مقدار عبارت نهایی برابر ۶ می شود.

تمام اجزای این گراف برای تنسورفلو به طور کامل قابل بیان است. تا جایی که می تواند عملیات بهینه سازی مبتنی بر مشتق (مثل گرادیان نزولی) را بر روی یک گراف انجام دهد. به طور کلی مشتق گیری برروی گراف های محاسباتی از قوانین ساده ای پیروی می کند. برای شکل بالا اعمال این قواعد به شکل زیر خواهد شد:

در شکل زیر هم مسیر مشتق گیری بر روی گراف محاسباتی نشان داده شده است:


به طور کلی دو قانون ساده برای مشتق گیری بر روی گراف محاسباتی وجود دارد. 

۱- مشتق های موازی با هم جمع میشوند

۲- مشتق های سری در هم ضرب می شوند.

مثلا در شکل زیر:


مشتق به صورت زیر در می آید: