Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Какие закономерности находят нейросети?

Время на прочтение6 мин
Количество просмотров8.9K
В этом посте я хочу рассказать о закономерностях, которые могут находить нейросети. Во многих руководствах для начинающих акцент делается на технике написания кода для нейронных сетей, при этом вопросы «логики» (что могут нейросети? какие архитектуры лучше подходят для каких задач и почему?) часто остаются в стороне. Я надеюсь, мой пост поможет начинающим лучше понять возможности нейронных сетей. Для этого мы попробуем посмотреть, как они справляются с некоторыми модельными задачами. Примеры кода будут приводиться на python с использованием библиотеки keras.

Задача 1. Начнём с простого. Построим нейронную сеть, аппроксимирующую синус.

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense


def get_X_y(n):
    X = np.random.uniform(0, np.pi, n)
    y = np.sin(X)
    return X, y


n = 40
X, y = get_X_y(n)
print("X shape:", X.shape)

model = Sequential()
model.add(Dense(6, input_dim=1, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error'])

model.fit(X, y, epochs=1000, batch_size=4)

X_test = np.linspace(start=0, stop=np.pi, num=500)
print("X test shape:", X_test.shape)
y_test = model.predict(X_test)

font = {'weight': 'bold',
        'size': 25}

matplotlib.rc('font', **font)
axes = plt.gca()
axes.set_ylim(0, 1)
plt.plot(X_test, y_test, c='green', marker='o', markersize=5)
plt.title("Sinus approximated by neural network")
plt.yticks(np.arange(0, 1, 0.1))
plt.grid()
plt.show()

Получаем следующий график:



Как видим, нейронная сеть успешно справилась с задачей аппроксимации несложной функции.
Читать дальше →
Всего голосов 38: ↑17 и ↓21-4
Комментарии7

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность