Полная версия
Сверточные нейросети
# Загрузка данных Pima Indians Diabetes
from sklearn.datasets import load_diabetes
data = load_diabetes()
X = data.data
y = (data.target > data.target.mean()).astype(int) # Бинаризация целевой переменной
# Разделение данных на тренировочную и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Нормализация данных
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Создание модели
model = Sequential()
# Добавление слоев с функцией активации Sigmoid
model.add(Dense(12, input_dim=X_train.shape[1], activation='sigmoid')) # Первый полносвязный слой с Sigmoid
model.add(Dense(8, activation='sigmoid')) # Второй полносвязный слой с Sigmoid
model.add(Dense(1, activation='sigmoid')) # Выходной слой с Sigmoid для бинарной классификации
# Компиляция модели
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Обучение модели
model.fit(X_train, y_train, epochs=150, batch_size=10, validation_split=0.2)
# Оценка модели на тестовых данных
score = model.evaluate(X_test, y_test)
print(f'Test loss: {score[0]}')
print(f'Test accuracy: {score[1]}')
```
Пояснение
1. Загрузка данных Pima Indians Diabetes:
Мы используем набор данных Pima Indians Diabetes, который содержит различные медицинские показатели, чтобы предсказать, есть ли у пациента диабет (бинарная классификация). В этом примере мы создаем бинарную метку на основе того, превышает ли целевая переменная среднее значение.
2. Разделение данных:
Мы делим данные на тренировочные и тестовые выборки в соотношении 80% на 20%.
3. Нормализация данных:
Мы нормализуем данные с использованием `StandardScaler` для улучшения производительности модели.
4. Создание модели:
Мы создаем последовательную модель (Sequential) и добавляем слои:
– Первый слой содержит 12 нейронов и использует функцию активации Sigmoid. Размер входного слоя соответствует числу признаков в данных.
– Второй слой содержит 8 нейронов и также использует функцию активации Sigmoid.
– Выходной слой содержит 1 нейрон и использует функцию активации Sigmoid для бинарной классификации (выходное значение в диапазоне от 0 до 1, интерпретируемое как вероятность).
5. Компиляция модели:
Мы компилируем модель, используя функцию потерь `binary_crossentropy`, оптимизатор `adam` и метрику `accuracy`.
6. Обучение модели:
Мы обучаем модель на тренировочных данных с размером батча 10 и числом эпох 150, используя 20% данных для валидации.
7. Оценка модели:
Мы оцениваем модель на тестовых данных и выводим значения потерь и точности.
Этот пример демонстрирует, как функция активации Sigmoid используется в полносвязных слоях нейронной сети для задачи бинарной классификации. Sigmoid помогает интерпретировать выходные значения как вероятности, что делает её полезной для этой задачи.
Tanh (Hyperbolic Tangent)
Функция активации Tanh, или гиперболический тангенс, является популярным выбором для нейронных сетей благодаря своим уникальным свойствам. Она преобразует входные значения в диапазон от -1 до 1, что делает её центрально симметричной относительно начала координат. Это означает, что отрицательные входные значения будут отображаться на отрицательные выходные значения, а положительные входные значения будут отображаться на положительные выходные значения. Центральная симметрия функции Tanh делает её особенно полезной, когда нужно нормализовать данные и сделать нулевое значение централизованным, что помогает ускорить процесс обучения.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.