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

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

# Load Data & Prepare X, yimport cv2import osX_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, yimport numpy as npX_train = np.array(X_Raw_train).astype(np.float32)/255X_test = np.array(X_Raw_test).astype(np.float32)/255X_valid = np.array(X_Raw_valid).astype(np.float32)/255y_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 Modelfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, FlattenAlexNet_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 ModelAlexNet_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 的架构
http://img2.58codes.com/2024/20139039iN01xikt6s.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章