В настоящее время я работаю над 2D CNN в керасе для классификации МРТ. Коэффициент класса составляет около 60/40, у меня 155 пациентов, каждый с одним МРТ, состоящим из 180 срезов, вход CNN представляет собой срез изображения МРТ (256*256 пк) (поэтому в общей сложности составляет ~ 27900 Изображения, каждый 256*256 пикселей). < /p>
Я протестировал разные модели и всегда оценивал их с помощью перетасовванной 10 -кратной перекрестной проверки и раннего монитора, и все они работали очень хорошо, от 95% до 98% точности проверки. Но каждый раз, один или два сгиба работают намного хуже, чем другие (точность проверки от 70% до 80%). Поскольку складки рандомизированы, я ожидаю, что складки будут работать одинаково хорошо. < /p>
Графики для точности и потери: < /p>
Точность и точность поезда и точность проверки < /p>
Потеря потери и потери поезда и потери в валидации < /p>
Это часть одной из моделей: < /p>
num_classes = 2
img_size = 256
batch_size = 200
# Because of EarlyStopping monitor, the number of epochs doesn't really matter
num_epochs = 1000
kfold_splits = 10
skf = StratifiedKFold(n_splits=kfold_splits, shuffle=True)
# Here the data is split
for index, (train_index, test_index) in enumerate(skf.split(x_data_paths, y_data_paths)):
x_train, x_test = np.array(x_data_paths)[train_index.astype(int)], np.array(x_data_paths)[test_index.astype(int)]
y_train, y_test = np.array(y_data_paths)[train_index.astype(int)], np.array(y_data_paths)[test_index.astype(int)]
training_batch_generator = BcMRISequence(x_train, y_train_one_hot, batch_size)
test_batch_generator = BcMRISequence(x_test, y_test_one_hot, batch_size)
# region Create model (using the functional API)
inputs = Input(shape=(img_size, img_size, 1))
conv1 = Conv2D(64, kernel_size=5, strides=1, activation='relu')(inputs)
pool1 = MaxPooling2D(pool_size=3, strides=(2, 2), padding='valid')(conv1)
conv2 = Conv2D(32, kernel_size=3, activation='relu')(pool1)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
conv3 = Conv2D(16, kernel_size=3, activation='relu')(pool2)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
flat = Flatten()(pool3)
hidden1 = Dense(10, activation='relu')(flat)
output = Dense(num_classes, activation='softmax')(hidden1)
model = Model(inputs=inputs, outputs=output)
Подробнее здесь: https://stackoverflow.com/questions/578 ... fold-cross
Как предотвратить, чтобы один раз выполнил гораздо хуже, чем другие 9 в 10-кратной перекрестной проверке для классификац ⇐ Python
Программы на Python
1737777456
Anonymous
В настоящее время я работаю над 2D CNN в керасе для классификации МРТ. Коэффициент класса составляет около 60/40, у меня 155 пациентов, каждый с одним МРТ, состоящим из 180 срезов, вход CNN представляет собой срез изображения МРТ (256*256 пк) (поэтому в общей сложности составляет ~ 27900 Изображения, каждый 256*256 пикселей). < /p>
Я протестировал разные модели и всегда оценивал их с помощью перетасовванной 10 -кратной перекрестной проверки и раннего монитора, и все они работали очень хорошо, от 95% до 98% точности проверки. Но каждый раз, один или два сгиба работают намного хуже, чем другие (точность проверки от 70% до 80%). Поскольку складки рандомизированы, я ожидаю, что складки будут работать одинаково хорошо. < /p>
Графики для точности и потери: < /p>
Точность и точность поезда и точность проверки < /p>
Потеря потери и потери поезда и потери в валидации < /p>
Это часть одной из моделей: < /p>
num_classes = 2
img_size = 256
batch_size = 200
# Because of EarlyStopping monitor, the number of epochs doesn't really matter
num_epochs = 1000
kfold_splits = 10
skf = StratifiedKFold(n_splits=kfold_splits, shuffle=True)
# Here the data is split
for index, (train_index, test_index) in enumerate(skf.split(x_data_paths, y_data_paths)):
x_train, x_test = np.array(x_data_paths)[train_index.astype(int)], np.array(x_data_paths)[test_index.astype(int)]
y_train, y_test = np.array(y_data_paths)[train_index.astype(int)], np.array(y_data_paths)[test_index.astype(int)]
training_batch_generator = BcMRISequence(x_train, y_train_one_hot, batch_size)
test_batch_generator = BcMRISequence(x_test, y_test_one_hot, batch_size)
# region Create model (using the functional API)
inputs = Input(shape=(img_size, img_size, 1))
conv1 = Conv2D(64, kernel_size=5, strides=1, activation='relu')(inputs)
pool1 = MaxPooling2D(pool_size=3, strides=(2, 2), padding='valid')(conv1)
conv2 = Conv2D(32, kernel_size=3, activation='relu')(pool1)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)
conv3 = Conv2D(16, kernel_size=3, activation='relu')(pool2)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)
flat = Flatten()(pool3)
hidden1 = Dense(10, activation='relu')(flat)
output = Dense(num_classes, activation='softmax')(hidden1)
model = Model(inputs=inputs, outputs=output)
Подробнее здесь: [url]https://stackoverflow.com/questions/57872232/how-to-prevent-one-fold-to-perform-a-lot-worse-than-the-other-9-in-10-fold-cross[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия