我训练了一个简单的DNN模型 - 使用带有Theano后端的Keras,具有: 2 *(3x3转换层,2x2最大池,15%丢失), 96-FC层, softmax在最后一层激活, 优化者:亚当。 目标是对6个班级进行分类。 我有一个数据集,包括116000平均分布在所有类图像中。 经过14个时代 - 验证结果很棒: 损失:0.1,测试数据的准确率为92% - 在培训期间,我的培训和验证数据也有类似的结果。
该任务仅用于学习目的 - 在Kaggle网站中定义。他们希望获得最小的对数丢失结果。当我在那里上传我的预测时 - 计算的损失非常高(> 2)
你有什么建议吗?
代表网络的一些代码以及我如何使用它:
116000尺寸为160x160的图像
model = Sequential()
model.add(Convolution2D(64, 3, 3, activation='relu', input_shape=(1, 160, 160)))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.15))
model.add(Convolution2D(128, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.15))
model.add(Flatten())
model.add(Dense(96, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(classes), activation='softmax'))
model.compile(loss='categorical_crossentropy',#categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(np.array(trainData[0]), np.array(trainData[1]),
batch_size=13, nb_epoch=14, verbose=1, shuffle=True, callbacks=callbacks_list, validation_data = (np.array(validationData[0]), np.array(validationData[1])))
scores = model.evaluate(np.array(testData[0]), np.array(testData[1]), verbose=1)