Day32 参加职训(机器学习与资料分析工程师培训班),tf.keras

今日练习内容为建构CNN模型来分类鸟类图片,最後讲解一些架构的演进

# Load Data & Prepare X, y

import cv2
import os

X_Raw_train = []
X_Raw_test = []
X_Raw_valid = []

y_Raw_train = []
y_Raw_test = []
y_Raw_valid = []
target_name = {}

parent_dir = './Birds/285 birds/'

for first_layer_dir in os.listdir(parent_dir):
    layer01_dir = os.path.join(parent_dir, first_layer_dir)
    if not os.path.isdir(layer01_dir):
        continue
    if first_layer_dir == 'image to test':
        continue
    if first_layer_dir == 'one image to test':
        continue
    
    for second_layer_dir in os.listdir(layer01_dir):
        layer02_dir = os.path.join(layer01_dir, second_layer_dir)
        
        if not os.path.isdir(layer02_dir):
            continue
        Label_index = os.listdir(layer01_dir).index(second_layer_dir)
        if Label_index == 20:
            break
        for files in os.listdir(layer02_dir):
            filename = os.path.join(layer02_dir, files)
            
            if filename.endswith('.jpg'):
                image = cv2.imread(filename)
                if first_layer_dir == 'train':
                    X_Raw_train.append(image)
                    y_Raw_train.append(Label_index) 
                    target_name[Label_index] = second_layer_dir
                if first_layer_dir == 'test':
                    X_Raw_test.append(image)
                    y_Raw_test.append(Label_index) 
                    target_name[Label_index] = second_layer_dir
                if first_layer_dir == 'valid':
                    X_Raw_valid.append(image)
                    y_Raw_valid.append(Label_index) 
                    target_name[Label_index] = second_layer_dir
# preprocessing X, y

import numpy as np

X_train = np.array(X_Raw_train).astype(np.float32)/255
X_test = np.array(X_Raw_test).astype(np.float32)/255
X_valid = np.array(X_Raw_valid).astype(np.float32)/255

y_train = np.array(y_Raw_train).astype(np.float32)
y_test = np.array(y_Raw_test).astype(np.float32)
y_valid = np.array(y_Raw_valid).astype(np.float32)
# Bulid Model

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten

AlexNet_Model = Sequential()
AlexNet_Model.add(Conv2D(96,(11,11), strides = 4, activation = 'relu', input_shape=(224,224, 3)))
AlexNet_Model.add(MaxPooling2D((3,3), 2))
AlexNet_Model.add(Conv2D(32,(5,5), padding = 'same', activation = 'relu'))
AlexNet_Model.add(MaxPooling2D((3,3), 2))
AlexNet_Model.add(Conv2D(32,(3,3), padding = 'same', activation = 'relu'))
AlexNet_Model.add(Conv2D(32,(3,3), padding = 'same', activation = 'relu'))
AlexNet_Model.add(Conv2D(32,(3,3), padding = 'same', activation = 'relu'))               
AlexNet_Model.add(MaxPooling2D((3,3), 2))
AlexNet_Model.add(Flatten())
AlexNet_Model.add(Dense(2048, activation = 'relu'))
AlexNet_Model.add(Dense(1024, activation = 'relu'))
AlexNet_Model.add(Dense(20, activation = 'softmax'))
# Train Model

AlexNet_Model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['acc'])
AlexNet_Model.history = Alex_Model.fit(X_train, y_train, epochs=30, batch_size=16, validation_data=(X_valid, y_valid))

附上AlexNet 的架构
https://ithelp.ithome.com.tw/upload/images/20210812/20139039iN01xikt6s.png


<<:  顾客心思太难猜?学会搜寻意图,读懂顾客在想什麽…

>>:  Golang - Stack & Heap

小产品跟大产品都可以通用的决策系统:Randomized AB Test

疫苗在台湾第一次吵得沸沸扬扬时,我也被各种有孔没笋的消息搞得莫名其妙,为了跟人争辩时不要说错话,闲人...

Day01:从规划开始

前言(作者碎碎念): 大家好我是小精灵,我是个菜鸟工实习生兼研究生,第一次参加铁人赛 想藉着这次的铁...

Laravel:Route Wildcards 2

前言 Laravel:Route Wildcards - iT 邦帮忙::一起帮忙解决难题,拯救 I...

[DAY07] 开始用 Designer 在 Azure Machine Learning 做 AI

DAY07 开始用 Designer 在 Azure Machine Learning 做 AI 我...

DAY 26 『 AVPlayerViewController - 播放影片 』

今天要分享的是,如何用 AVPlayerViewController 显示影片 成品: {%yout...