《猫狗分类》题目链接
题目所给训练集是20000张大小不一的猫狗图片,猫10000张,狗10000张,测试集是5000张混合在一起的猫狗图片。
训练集下载train.zip
测试集下载test.zip
前言
实验内容是按照博客《在lintcode刷AI题:猫狗分类器》
来完成的,万分感谢作者。
一、认识VGG16神经网络
小知识:训练神经网络中的epochs表示对每张训练图片,神经网络的观看次数。
下图为VGG16的网络结构:黑色表示卷积层,红色表示最大池化层,蓝色是全连接层。
对应的,在Keras框架下搭建VGG16网络如下:
from keras.models import Sequential
from keras.layers.core import Flatten,Dense,Dropout
from keras.layers.convolutional import Convolution2D,MaxPooling2D,ZeroPadding2D
from keras.optimizers import SGD
import cv2
import numpy as np
def VGG_16(weights_path=None):
model=Sequential()
model.add(ZeroPadding2D((1,1),input_shape=(3,224,224)))
model.add(Convolution2D(64,3,3,activation="relu"))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(64,3,3,activation="relu"))
model.add(MaxPooling2D((2,2),strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128,3,3,activation="relu"))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128,3,3,activation="relu"))
model.add(MaxPooling2D((2,2),strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256,3,3,activation="relu"))
model.add(ZeroPadding2D((