200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 利用keras搭建AlexNet神经网络识别kaggle猫狗图片

利用keras搭建AlexNet神经网络识别kaggle猫狗图片

时间:2019-06-16 20:01:30

相关推荐

利用keras搭建AlexNet神经网络识别kaggle猫狗图片

AlexNet结构

keras代码

from PIL import Imageimport numpy as npfrom keras.utils import to_categoricalpath="F:\\kaggle\\dog_vs_cat\\"train_X=np.empty((2000,227,227,3),dtype="float16")train_Y=np.empty((2000,),dtype="int")for i in range(1000):file_path=path+"cat."+str(i)+".jpg"image=Image.open(file_path)resized_image = image.resize((227, 227), Image.ANTIALIAS)img=np.array(resized_image)train_X[i,:,:,:]=imgtrain_Y[i]=0for i in range(1000):file_path=path+"dog."+str(i)+".jpg"image = Image.open(file_path)resized_image = image.resize((227, 227), Image.ANTIALIAS)img = np.array(resized_image)train_X[i+1000, :, :, :] = imgtrain_Y[i+1000] = 1train_X /= 255train_Y = to_categorical(train_Y, 2)index = np.arange(2000)np.random.shuffle(index)train_X = train_X[index, :, :, :]train_Y = train_Y[index]print(train_X.shape)print(train_Y.shape)from keras.layers import BatchNormalization, Dropoutfrom keras.models import Sequentialfrom keras.layers import Conv2D, MaxPooling2D, Flatten, Dense,Activation# AlexNetmodel = Sequential()# 第一段model.add(Conv2D(filters=96, kernel_size=(11, 11),strides=(4, 4), padding='valid',input_shape=(227, 227, 3),activation='relu'))model.add(BatchNormalization())model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2),padding='valid'))# 第二段model.add(Conv2D(filters=256, kernel_size=(5, 5),strides=(1, 1), padding='same',activation='relu'))model.add(BatchNormalization())model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2),padding='valid'))# 第三段model.add(Conv2D(filters=384, kernel_size=(3, 3),strides=(1, 1), padding='same',activation='relu'))model.add(Conv2D(filters=384, kernel_size=(3, 3),strides=(1, 1), padding='same',activation='relu'))model.add(Conv2D(filters=256, kernel_size=(3, 3),strides=(1, 1), padding='same',activation='relu'))model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2), padding='valid'))# 第四段model.add(Flatten())model.add(Dense(4096, activation='relu'))model.add(Dropout(0.5))model.add(Dense(4096, activation='relu'))model.add(Dropout(0.5))model.add(Dense(1000, activation='relu'))model.add(Dropout(0.5))# Output Layermodel.add(Dense(2))model.add(Activation('softmax'))pile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])batch_size = 32epochs = 20model.fit(train_X, train_Y,batch_size=batch_size,epochs=epochs)

其中数据集为2000张猫狗图片,1000张猫,1000张狗,图片名为cat.0.jpg,dog.1.jpg等,即cat(dog).i.jpg格式,读取图像后resize为227x227x3作为AlexNet的输入,这里用BN代替LRN,batch_size取为32,训练20轮(实在太慢,20轮就算了很久),最后得到如下结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。