در این آموزش میخواهیم دیتاست Fashion MNIST رو در تنسورفلو و در محیط گوگل کولب وارد کنیم و مدلی ساده با استفاده از ابزار tensorflow بسازیم که در اصل یک شبکه عصبی ساده است.
دیتاست Fashion MNIST
دیتاست Fashion MNIST دیتاستی است شامل تصاویر grayscale یا خاکستری که ابعاد کوچک 28 در 28 دارند، می شود و 70000 نمونه در ده دسته مختلف اطلاعات آماری این بانک اطلاعاتی است.
این ده دسته به شرح جدول زیر است .
لیبیل | کلاس | ترجمه |
---|---|---|
0 | T-shirt/top | تی شرت/تاپ |
1 | Trouser | شلوار |
2 | Pullover | پلیور |
3 | Dress | لباس زنانه |
4 | Coat | کت |
5 | Sandal | صندل |
6 | Shirt | پیراهن |
7 | Sneaker | کفش ورزشی |
8 | Bag | کیف |
9 | Ankle boot | نیم بوت |
مراحل اجرای کد
همینطور که در ویدئو هم مشاهده فرموید ابتدای امر به محیط گوگل کولب ورود میکنیم و با ساخت یک کد جدید اقدام به شروع برنامه می نماییم.
اول از هر کاری نیاز داریم تا پکیج های مورد نیاز در این برنامه را وارد نماییم.
# TensorFlow and tf.keras
import tensorflow as tf
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
from google.colab.patches import cv2_imshow
print(tf.__version__)
تنسورفلو؛ فریم ورک اصلی کار در زمینه یادگیری عمیق هست. و از بخش کراس که از api های مهم این پکیج است در این برنامه استفاده می کنیم. از نامپای برای محاسبات ریاضی و کار با ماتریس ها، matplotlib برای نمایش نمودار ها و تصاویر و cv2_imshow برای نمایش تصویر در کولب استفاده شده است. خروجی این سطر 2.8.0 است که ورژن تنسورفلو را نشان میدهد.
# TensorFlow and tf.keras
fashion_mnist = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
در این بخش از کد دیتاست fashion mnist رو در بخش datasets کراس لود میکنیم.
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
کد فوق دسته های مختلف دیتاست رو در یک لیست گردآوری نموده.
cv2_imshow(train_images[0])
نمودار فوق تصویر اولین دیتای آموزشی را نمایش میدهد.
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
کد فوق 25 تا از تصاویر دیتاست را به صورت 5 در 5 به همراه لیبل هر کدام را مشخص مینماید.
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
در کد فوق یک انباره خطی با استفاده از sequential ساختیم که فقط حکم نگه دارنده شبکه را داشته باشد و دو لایه تماما متصل ساختیم با کمک Dense که اولی 128 و دومی به دلیل تعداد کلاس های دیتاست 10 نرون دارد. همچنین نیاز است به دلیل استفاده از شبکه عصبی فولی کانکتد، داده تصویر را به بردار تبدیل نماییم.
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
در بخش فوق نیاز مندی های مدل تعریف شده نظیر بهینه ساز، تابع هزینه و معیار گزارشات را مشخص می نماییم.
model.fit(train_images, train_labels, epochs=10)
همچنین در این بخش روند آموزش را بر پایه داده های لیبل و تصاویر آموزشی دنبال میکنیم.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('\nTest accuracy:', test_acc)
ارزیابی لازم را بر اساس داده های تست انجام میدهیم و خروجی را مشخص میکنیم.
313/313 [==============================] - 1s 2ms/step - loss: 0.6690 - accuracy: 0.7475
Test accuracy: 0.7475000023841858
1 دیدگاه. ارسال دیدگاه جدید
بسیار خوب