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

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 คลาส
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