1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
import os import cv2 import numpy as np from keras.models import Sequential from keras.layers import Conv2D,MaxPool2D,Dense,Flatten from keras.utils import np_utils import keras.losses as losses
def load_datas(dir_path): datas = [] y = [] for image_name in os.listdir(dir_path): datas.append(cv2.resize(cv2.imread(os.path.join(dir_path, image_name)),(227,227))) if image_name.split('.')[0]=='cat': y.append(1) else: y.append(0) return np.array(datas),np.array(y)
def create_model(X,Y): model = Sequential() model.add(Conv2D(filters=96,kernel_size=(11,11),strides=(4,4))) model.add(MaxPool2D(pool_size=(3,3),strides=(2,2))) model.add(Conv2D(filters=256,kernel_size=(5,5),padding='same')) model.add(MaxPool2D(pool_size=(3,3),strides=(2,2))) model.add(Conv2D(filters=384,kernel_size=(3,3))) model.add(Conv2D(filters=384,kernel_size=(3,3))) model.add(Conv2D(filters=256,kernel_size=(3,3))) model.add(MaxPool2D(pool_size=(3,3),strides=(2,2))) model.add(Flatten()) model.add(Dense(units=4096,activation='relu')) model.add(Dense(units=4096, activation='relu')) model.add(Dense(units=2, activation='softmax')) model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy']) model.fit(X,Y,epochs=50)
if __name__ == '__main__': dir_path = r'G:\AI\kaggle\train2' X,Y = load_datas(dir_path) X = X/255 create_model(X,Y)
|