Основы МЛП
- Цель: создать ванильные нейронные сети (многослойный персептрон) для простых задач регрессии/классификации с помощью Keras.
Структуры МЛП
- Каждая модель MLP состоит из одного входного слоя, нескольких скрытых слоев и одного выходного слоя.
- Количество нейронов в каждом слое не ограничено.
- Количество входных нейронов: 3
- Количество скрытых нейронов: 4
- Количество выходных нейронов: 2
- Количество входных нейронов: 3
- Количество скрытых нейронов: (4,4)
- Количество выходных нейронов: 1
MLP для задач регрессии
- Когда цель (y) непрерывна (реальна)
- Для функции потерь и метрики оценки обычно используется среднеквадратическая ошибка (MSE).
from keras.datasets import boston_housing (X_train,y_train),(X_test,y_test) = boston_housing.load_data()
Наборы данных из Кераса
Документ: https://keras.io/datasets/
print(X_train.shape) print(X_test.shape) print(y_train.shape) print(y_test.shape)
1. Создание модели
- созданный с последовательным классом
- Изначально модель сама по себе пуста. Завершается «добавлением» дополнительных слоев и компиляцией
- Документ: https://keras.io/models/sequential/
from keras.models import Sequential model = Sequential()
1–1. Добавление слоев
- Слой Keras можно добавить в модель
- добавление слоев похоже на складывание блоков лего один за другим
- Документ: https://keras.io/layers/core/
from keras.layers import Activation, Dense # keras model witth two hidden layer with 10 neurons each model.add(Dense(10,activation=None, input_shape = (13,))) # input layer => input_shape should be explicitly designated model.add(Activation('sigmoid')) model.add(Dense(10)) # Hidden layer => only output dimension should be designated model.add(Activation('sigmoid')) model.add(Dense(10))# Hidden layer => only output dimension should be designated model.add(Activation('sigmoid')) model.add(Dense(1)) # Output layer => output dimension = 1 since it is regression problem # this is equivalent to the above code block model.add(Dense(10, input_shape = (13,), activation= 'sigmoid')) model.add(Dense(10, activation= 'sigmoid')) model.add(Dense(10, activation= 'sigmoid')) model.add(Dense(1))
1–2. Компиляция модели
- Модель Кераса должна быть «скомпилирована» до обучения.
- Должны быть обозначены виды потери (функция) и оптимизатор
*Doc (optimizers): https://keras.io/optimizers/
*Doc (losses): https://keras.io/losses/
from keras import optimizers
sgd = optimizers.SGD(lr = 0.01) # stochastic gradient decent optimizer
model.compile(optimizer = sgd, loss = 'mean_squared_error', metrics = ['mse']) # for regression problems, mean squared error (MSE) is often employed
Краткое описание модели
model.summary()
2. Обучение
- модель с предоставленными обучающими данными
model.fit(X_train,y_train, batch_size =50, epochs =100, verbose =1 )
3. Оценка
- Модель Keras можно оценить с помощью функции Assessment().
- Результаты оценки содержатся в списке
- Документ(метрики): https://keras.io/metrics/
results = model.evaluate(X_test,y_test) print(model.metrics_names) # listt of metric the model is employing print(results) # actual fig of metrics computed print('loss: ', results[0]) print('mse: ',results[1])
Полный код по ссылке Google Colaboratory.