【发布时间】:2019-04-30 14:46:45
【问题描述】:
我想知道我的代码是否在做我想做的事;为了给你一些背景,我正在实施 CNN 进行图像分类。我正在尝试使用交叉验证来比较我不同的神经网络架构
这里是代码:
def create_model():
model = Sequential()
model.add(Conv2D(24,kernel_size=3,padding='same',activation='relu',
input_shape=(96,96,1)))
model.add(MaxPool2D())
model.add(Conv2D(48,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D())
model.add(Conv2D(64,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D())
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(12, activation='softmax'))
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
return model
model = KerasClassifier(build_fn=create_model, epochs=5, batch_size=20, verbose=1)
# 3-Fold Crossvalidation
kfold = KFold(n_splits=3, shuffle=True, random_state=2019)
results = cross_val_score(model, train_X, train_Y_one_hot, cv=kfold)
model.fit(train_X, train_Y_one_hot,validation_data=(valid_X, valid_label),class_weight=class_weights)
y_pred = model.predict(test_X)
test_eval = model.evaluate(test_X, y_pred, verbose=0)
我在互联网上找到了用于交叉验证的部分。但是我有一些理解上的问题。
我的问题:1=>我可以使用交叉验证来提高我的准确性吗?例如,我运行了 10 次我的神经网络,我的模型得到了出现最佳准确度的权重
2 => 如果我理解得很好,在上面的代码中,results 运行我的 CNN 3 次并向我展示准确性。但是当我使用 model.fit 时,模型只运行一次;我说的对吗?
感谢您的帮助
【问题讨论】:
标签: python machine-learning keras conv-neural-network cross-validation