Neural NetWork

Datasets

นำมาจากkaggle Animals-10เป็น Dataset เกี่ยวกับภาพหน้าของสัตว์ 10 categories คือ "Dog", "Cat", "Horse", "Spider", "butterfly", "Chicken", "Sheep", "Cow", "Squirrel", "elephant" จุดประสงค์ คือ ต้องการให้ผู้ใช้ส่งภาพสัตว์และให้โมเดลทำนายว่ามันคือภาพสัตว์ชนิดอะไร

Example Dataset

datasetML

Mapping Cover Language Italian to English

เนื่องจากโฟลเดอร์ของไฟล์นี้เป็นภาษาอื่นซึ่งเป็นภาษา Italian จึงต้องทำการแปลภาษาเป็นภาษา อังกฤษ ก่อน โดยใช้ Dictionary ในการแปลภาษา

MappingTranslate.py
1translate = {"cane": "dog", "cavallo": "horse", "elefante": "elephant", "farfalla": "butterfly", 2"gallina": "chicken", "gatto": "cat", "mucca": "cow", "pecora": "sheep", "scoiattolo": "squirrel", 3"dog": "cane", "cavallo": "horse","elephant" : "elefante", "butterfly": "farfalla", "chicken": "gallina", "cat": "gatto", 4"cow": "mucca", "ragno": "spider", "squirrel": "scoiattolo"} 5 6for img_class in os.listdir("/kaggle/input/animals10/raw-img/"): 7 print(translate[img_class]) 8
OutputMapping.py
1horse 2sheep 3elephant 4cat 5squirrel 6chicken 7spider 8cow 9dog 10butterfly

Normalize Data, Resize Images, and Split Data for Training and Testing

ทำการ normalize data และปรับภาพให้มีขนาดเท่ากัน 128*128 และแบ่งข้อมูลสำหรับ train และ test 80:20

Normalize Data, Resize Images, and Split Data for Training and Testing.py
1from tensorflow.keras.preprocessing.image import ImageDataGenerator 2 3data_generator = ImageDataGenerator( 4 rescale=1./255, 5 validation_split=0.2 6) 7train_data = data_generator.flow_from_directory( 8 '/kaggle/input/animals10/raw-img/', 9 target_size=(128, 128), 10 class_mode='categorical', 11 batch_size=64, 12 subset='training', 13 shuffle=True 14) 15 16# โหลดข้อมูล validation 17valid_data = data_generator.flow_from_directory( 18 '/kaggle/input/animals10/raw-img/', 19 target_size=(128, 128), 20 class_mode='categorical', 21 batch_size=64, 22 subset='validation', 23 shuffle=True 24) 25

Layer Model

ทำการใส่ layer ให้กับ model input 128*128*3 output มี 10 คลาส

Layer Model
1import tensorflow as tf 2from tensorflow.keras import layers, models 3from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense 4 5model = models.Sequential() 6 7model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 3))) 8model.add(layers.MaxPooling2D((2, 2))) 9 10model.add(layers.Conv2D(64, (3, 3), activation='relu')) 11model.add(layers.MaxPooling2D((2, 2))) 12 13model.add(layers.Conv2D(128, (3, 3), activation='relu')) 14model.add(layers.MaxPooling2D((2, 2))) 15 16model.add(layers.Flatten()) 17model.add(layers.Dense(512, activation='relu')) 18 19model.add(layers.Dense(10, activation='softmax')) # 10 คลาส
datasetML

Model Optimizer

เทรน model optimizer ด้วย adam เทรนจำนวน 10 epochs

Model Optimizer.py
1model.compile(loss='categorical_crossentropy', 2 optimizer='adam', 3 metrics=['accuracy']) 4 5model.fit( 6 train_data, 7 epochs=10, 8 validation_data=valid_data, 9 steps_per_epoch=100, 10 validation_steps=20 11) 12