From:猫狗大战:融合了三种模型的Keras代码,准确率直升到99%
使用keras的resnet,inceptionV3,xception模型,首先加载预训练模型的权重,通过预训练权重生成对猫狗的训练值和测试值的特征向量
预训练模型下载地址:http://pan.baidu.com/s/1geHmOpH
[code]
接着加载三个模型,并分别提取出训练集和测试集的权重,放入h5文件中
write_gap(ResNet50, (224, 224))
write_gap(InceptionV3, (299, 299), inception_v3.preprocess_input)
write_gap(Xception, (299, 299), xception.preprocess_input)
得到的每个图片的特征向量都是2048维,所以每个特征文件储存内容都是
trian:(25000,2048)
label:(25000,1)
test:(12500,2048)
接着,把三个模型合并在一起,每个图片就有2048*3个权重值了
[code]
然后我们基于这些权重值建立一个全连接
inputs = Input(X_train.shape[1:])#shape=(2048*3,)
x = Dropout(0.5)(inputs)
x = Dense(1, activation='sigmoid')(x)
model = Model(inputs, x)
model.compile(optimizer='adadelta',
loss='binary_crossentropy',
metrics=['accuracy'])
开始训练,会发现,准确度在第一次训练之后就已经到达99%了,全训练完不到半分钟,训练完成之后就直接用训练好的权重预测测试集吧
[code]
得到结果测试集放在csv文件里
[code]