Читать книгу Искусственный интеллект в прикладных науках. Медицина онлайн

test_data_dir,

target_size=(150, 150),

batch_size=32,

class_mode='binary')

```

– Здесь задаются пути к каталогам с обучающими и тестовыми данными.

– `ImageDataGenerator` используется для масштабирования значений пикселей в диапазоне от 0 до 1.

– `flow_from_directory` загружает изображения из указанных каталогов, изменяет их размер до 150x150 пикселей и разбивает их на пакеты размером 32 изображения.

3. Создание модели CNN:

```python

model = Sequential([

Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),

MaxPooling2D(2, 2),

Conv2D(64, (3, 3), activation='relu'),

MaxPooling2D(2, 2),

Conv2D(128, (3, 3), activation='relu'),

MaxPooling2D(2, 2),

Conv2D(128, (3, 3), activation='relu'),

MaxPooling2D(2, 2),

Flatten(),

Dense(512, activation='relu'),

Dense(1, activation='sigmoid')

])

```

– Создается последовательная модель.

– Добавляются слои свертки (`Conv2D`) и слои пулинга (`MaxPooling2D`), которые позволяют модели извлекать признаки из изображений.

– Последние слои – полносвязные слои (`Dense`), которые выполняют классификацию.

4. Компиляция модели:

```python

model.compile(loss='binary_crossentropy',

optimizer='adam',

metrics=['accuracy'])

```

– Здесь модель компилируется с функцией потерь `binary_crossentropy`, оптимизатором `adam` и метрикой `accuracy` для оценки производительности модели во время обучения.

5. Обучение модели:

```python

history = model.fit(

train_generator,

steps_per_epoch=train_generator.samples/train_generator.batch_size,

epochs=10,

validation_data=test_generator,

validation_steps=test_generator.samples/test_generator.batch_size)

```

– Обучение модели происходит с использованием метода `fit`.

– Обучающие данные подаются через `train_generator`, тестовые данные через `test_generator`.

– `steps_per_epoch` и `validation_steps` задают количество шагов на каждую эпоху обучения и валидации соответственно.

6. График точности и потерь:

```python

plt.plot(history.history['accuracy'], label='accuracy')

plt.plot(history.history['val_accuracy'], label='val_accuracy')