آیا میدانستید که بر اساس گزارش اخیر MarketsandMarkets، ارزش بازار جهانی هوش مصنوعی تا سال ۲۰۲۷ به بیش از ۴۰۷ میلیارد دلار خواهد رسید؟ این رشد انفجاری نشان میدهد که هوش مصنوعی دیگر یک مفهوم آیندهنگرانه نیست، بلکه یک ابزار قدرتمند و در دسترس است که صنایع را متحول میکند. در قلب این تحول، ابزارهایی مانند TensorFlow قرار دارند که به توسعهدهندگان و حتی مبتدیان اجازه میدهند تا مدلهای هوشمند خود را بسازند. در این مقاله تحلیلی از «هوشروز»، ما شما را در یک سفر گامبهگام برای ساخت اولین مدل یادگیری ماشین با استفاده از TensorFlow 2.x همراهی خواهیم کرد.
یادگیری ماشین، که زمانی حوزهای پیچیده و منحصر به دانشمندان داده بود، اکنون به لطف کتابخانههای قدرتمندی مانند TensorFlow، دموکراتیزه شده است.
در این راهنمای جامع، ما به شما نشان خواهیم داد که چگونه بدون نیاز به دانش عمیق ریاضیات یا تجربه قبلی، یک مدل شبکه عصبی ساده برای طبقهبندی تصاویر بسازید. این مقاله برای همه کسانی که کنجکاو هستند بدانند جادوی هوش مصنوعی چگونه کار میکند، طراحی شده است.

TensorFlow چیست و چرا اهمیت دارد؟
TensorFlow در هسته خود یک کتابخانه محاسبات عددی است که از گرافهای جریان داده (Data Flow Graphs) برای پردازش استفاده میکند.در این گرافها، گرهها (Nodes) نمایانگر عملیات ریاضی و یالها (Edges) نشاندهنده آرایههای داده چندبعدی یا “تنسورها” (Tensors) هستند که بین گرهها جریان دارند.
ویژگی Eager Execution که در TensorFlow 2.x به صورت پیشفرض فعال است، به شما اجازه میدهد تا عملیات را به صورت فوری اجرا و نتایج را مشاهده کنید، که این امر فرآیند اشکالزدایی (Debugging) و توسعه را بسیار شبیه به برنامهنویسی عادی پایتون میکند.
شروع به کار: نصب و راهاندازی محیط
برای شروع، سادهترین راه استفاده از Google Colaboratory (Colab) است.
اگر ترجیح میدهید TensorFlow را روی سیستم خود نصب کنید، به یک نسخه نصبشده از پایتون نیاز خواهید داشت. از آنجایی که TensorFlow یک کتابخانه پایتون است، تسلط بر اصول این زبان فرآیند یادگیری را بسیار سادهتر میکند. اگر در این زمینه به راهنمایی بیشتری نیاز دارید، مطالعه مقاله جامع ما با عنوان «آموزش پایتون برای هوش مصنوعی؛ راهنمای جامع برای شروع» را به شما پیشنهاد میکنیم. در ادامه، توصیه میشود از یک محیط مجازی پایتون (Virtual Environment) برای جلوگیری از تداخل کتابخانهها استفاده کنید
برای ایجاد محیط مجازی و نصب TensorFlow، ترمینال یا Command Prompt را باز کرده و دستورات زیر را اجرا کنید:
# ایجاد یک محیط مجازی به نام tf_env
python -m venv tf_env
# فعالسازی محیط مجازی
# On Windows:
tf_env\Scripts\activate
# On macOS/Linux:
source tf_env/bin/activate
# نصب TensorFlow
pip install tensorflow
برای اطمینان از نصب صحیح، مفسر پایتون را باز کرده و دستورات زیر را وارد کنید:
import tensorflow as tf
print(tf.__version__)
اگر شماره نسخه TensorFlow بدون خطا نمایش داده شد، شما آماده شروع هستید.

ساخت اولین مدل: طبقهبندی تصاویر مد (Fashion MNIST)
در این بخش، ما یک مدل شبکه عصبی برای طبقهبندی تصاویر از مجموعه داده Fashion MNIST خواهیم ساخت. این مجموعه داده شامل ۷۰,۰۰۰ تصویر سیاهوسفید از ۱۰ نوع پوشاک مختلف (مانند تیشرت، شلوار، کفش و…) است. هدف ما آموزش مدلی است که بتواند با دیدن یک تصویر، نوع لباس را تشخیص دهد.
گام اول: بارگذاری و آمادهسازی دادهها
اولین قدم در هر پروژه یادگیری ماشین، آمادهسازی دادههاست. خوشبختانه Keras این کار را بسیار آسان کرده است.
import tensorflow as tf
from tensorflow import keras
# بارگذاری مجموعه داده Fashion MNIST
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
# تعریف نام کلاسها برای تفسیر خروجی
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# نرمالسازی دادهها
# مقادیر پیکسلها بین ۰ تا ۲۵۵ هستند. آنها را به بازه ۰ تا ۱ تبدیل میکنیم.
train_images = train_images / ۲۵۵.۰
test_images = test_images / ۲۵۵.۰
نرمالسازی دادهها یک مرحله حیاتی است که به شبکه عصبی کمک میکند تا سریعتر و پایدارتر آموزش ببیند.

گام دوم: ساختار مدل شبکه عصبی
اکنون زمان ساخت معماری مدل است. ما از Sequential API در Keras استفاده میکنیم که برای ساخت مدلهای لایهای ساده، ایدهآل است.
model = keras.Sequential([
# این لایه تصاویر 28x28 پیکسلی را به یک آرایه تکبعدی ۷۸۴ پیکسلی تبدیل میکند.
keras.layers.Flatten(input_shape=(۲۸, ۲۸)),
# یک لایه کاملاً متصل (Dense) با ۱۲۸ نورون و تابع فعالسازی ReLU.
keras.layers.Dense(۱۲۸, activation='relu'),
# لایه خروجی با ۱۰ نورون (به تعداد کلاسهای ما) و تابع فعالسازی softmax.
# Softmax احتمال تعلق تصویر به هر یک از ۱۰ کلاس را برمیگرداند.
keras.layers.Dense(۱۰, activation='softmax')
])
- Flatten Layer: این لایه وظیفه “صاف کردن” دادههای ورودی را بر عهده دارد. تصاویر ما که ماتریسهای ۲۸x۲۸ هستند، به یک بردار خطی با ۷۸۴ عنصر تبدیل میشوند.
- Dense Layer: این لایه، یک لایه نورونی کاملاً متصل است. در اینجا ما از ۱۲۸ نورون استفاده کردهایم. تابع فعالسازی
relu(Rectified Linear Unit) یکی از متداولترین توابع فعالسازی است که به مدل کمک میکند تا الگوهای غیرخطی را یاد بگیرد. - Output Layer: لایه آخر نیز یک لایه Dense با ۱۰ نورون است، زیرا ما ۱۰ دسته لباس مختلف داریم. تابع
softmaxخروجی این لایه را به یک توزیع احتمال تبدیل میکند، به طوری که مجموع خروجیها برابر با ۱ خواهد بود. هر نورون، احتمال تعلق تصویر به یکی از کلاسها را نشان میدهد.

گام سوم: کامپایل کردن مدل
قبل از شروع آموزش، باید مدل را “کامپایل” کنیم. در این مرحله، ما سه پارامتر مهم را تعریف میکنیم:
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
- Optimizer (بهینهساز): الگوریتمی که وزنهای شبکه را بر اساس دادهها و تابع زیان بهروزرسانی میکند.
adamیکی از محبوبترین و کارآمدترین بهینهسازهاست. - Loss Function (تابع زیان): این تابع میزان خطای مدل را در حین آموزش اندازهگیری میکند. مدل تلاش میکند تا مقدار این تابع را به حداقل برساند.
sparse_categorical_crossentropyبرای مسائل طبقهبندی چندکلاسه که برچسبها به صورت اعداد صحیح هستند، مناسب است. - Metrics (معیارها): معیارهایی که برای نظارت بر فرآیند آموزش و تست استفاده میشوند. در اینجا ما از
accuracy(دقت) استفاده میکنیم.
گام چهارم: آموزش مدل
حالا هیجانانگیزترین بخش فرا میرسد: آموزش مدل! ما این کار را با فراخوانی متد fit انجام میدهیم.
# آموزش مدل با دادههای آموزشی برای ۱۰ دوره (epoch)
model.fit(train_images, train_labels, epochs=۱۰)
در حین اجرا، شما خواهید دید که برای هر دوره (Epoch)، مقدار زیان (loss) کاهش و دقت (accuracy) افزایش مییابد. یک Epoch به معنای یک بار عبور کامل از کل مجموعه داده آموزشی است.

گام پنجم: ارزیابی دقت مدل
پس از اتمام آموزش، باید عملکرد مدل را بر روی دادههایی که قبلاً ندیده است، ارزیابی کنیم. برای این کار از مجموعه داده تست استفاده میکنیم.
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=۲)
print('\nTest accuracy:', test_acc)
به احتمال زیاد، دقت مدل شما روی دادههای تست کمی پایینتر از دقت آن روی دادههای آموزشی خواهد بود. این پدیده که به آن “بیشبرازش” (Overfitting) میگویند، کاملاً طبیعی است. مدل ما در این مثال ساده به دقتی در حدود ۸۸٪ دست خواهد یافت.
تحلیل نتایج و گامهای بعدی
تبریک! شما اولین مدل یادگیری ماشین خود را با TensorFlow ساختید. این مدل ساده توانست با دقت قابل قبولی تصاویر لباسها را دستهبندی کند. این دستاورد، نقطه شروعی عالی برای ورود به دنیای هوش مصنوعی است.
از اینجا به کجا برویم؟
- آزمایش با پارامترها: تعداد
epochsرا تغییر دهید. تعداد نورونها در لایهDenseرا کم یا زیاد کنید. آیا این تغییرات بر دقت مدل تأثیر میگذارد؟ - افزودن لایههای بیشتر: یک یا چند لایه
Denseدیگر به مدل اضافه کنید و ببینید آیا مدل “عمیقتر” عملکرد بهتری دارد یا خیر. - کاوش در دادههای دیگر: TensorFlow Datasets مجموعههای داده بسیار متنوعی را برای پروژههای مختلف ارائه میدهد.
این فرآیند آزمون و خطا، بخش جداییناپذیر از کار یک متخصص یادگیری ماشین است و به شما درک عمیقتری از نحوه عملکرد این مدلها میدهد.
آیندهای که با TensorFlow میسازیم
همانطور که در این راهنمای «هوشروز» مشاهده کردید، ساخت یک مدل پایه هوش مصنوعی با TensorFlow دیگر یک کار ترسناک و پیچیده نیست.
سوالات متداول
خیر. میتوانید از Google Colab استفاده کنید که یک محیط برنامهنویسی رایگان با دسترسی به GPU است و مستقیماً در مرورگر شما اجرا میشود. برای این آموزش نیازی به سختافزار خاصی ندارید.
خیر. برای این آموزش، درک منطق ساختار مدل کافی است. کتابخانه Keras محاسبات پیچیده ریاضی را در پسزمینه انجام میدهد. دانش ریاضی برای مباحث پیشرفته مفید است، اما برای شروع ضروری نیست.
این موضوع کاملاً طبیعی است. به دلیل مقداردهی اولیه تصادفی در شروع آموزش، نتایج نهایی ممکن است هر بار اندکی تفاوت داشته باشند. تفاوتهای جزئی در دقت، نشانه خطا نیست.
بله، اما با سه تغییر کلیدی:
دادهها: دادههای خود را بارگذاری و آمادهسازی کنید.
لایه ورودی: ابعاد ورودی (input_shape) را متناسب با تصاویر خود تنظیم کنید.
لایه خروجی: تعداد نورونهای لایه آخر را برابر با تعداد دستههای (کلاسهای) خود قرار دهید.