Я хотел бы знать, выполняет ли мой код то, что я хочу делать;Чтобы дать вам некоторое представление, я внедряю 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 => Если я хорошо понимаю, в приведенном выше коде результаты запустите мою CNN 3время и покажи мне точность.Но когда я использую model.fit , модель запускается только один раз;Я прав?
Спасибо за вашу помощь