「@Author:Runsen」
多层感知机(MLP)有着非常悠久的历史,多层感知机(MLP)是深度神经网络(DNN)的基础算法
MLP基础知识
具有一个隐藏层的MLP- 输入神经元数:3 - 隐藏神经元数:4 - 输出神经元数:2
from tensorflow.keras.datasets import boston_housing
(X_train, y_train), (X_test, y_test) = boston_housing.load_data()
from tensorflow.keras.models import Sequential
model = Sequential()
from tensorflow.keras.layers import Activation, Dense
# Keras model with two hidden layer with 10 neurons each
model.add(Dense(10, 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))
from tensorflow.keras import optimizers
sgd = optimizers.SGD(lr = 0.01) # stochastic gradient descent optimizer
model.compile(optimizer = sgd, loss = 'mean_squared_error', metrics = ['mse']) # for regression problems, mean squared error (MSE) is often employed
model.summary()
odel: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 140
_________________________________________________________________
activation (Activation) (None, 10) 0
_________________________________________________________________
dense_1 (Dense) (None, 10) 110
_________________________________________________________________
activation_1 (Activation) (None, 10) 0
_________________________________________________________________
dense_2 (Dense) (None, 10) 110
_________________________________________________________________
activation_2 (Activation) (None, 10) 0
_________________________________________________________________
dense_3 (Dense) (None, 1) 11
_________________________________________________________________
dense_4 (Dense) (None, 10) 20
_________________________________________________________________
dense_5 (Dense) (None, 10) 110
_________________________________________________________________
dense_6 (Dense) (None, 10) 110
_________________________________________________________________
dense_7 (Dense) (None, 1) 11
=================================================================
Total params: 622
Trainable params: 622
Non-trainable params: 0
_________________________________________________________________
model.fit(X_train, y_train, batch_size = 50, epochs = 100, verbose = 1)
results = model.evaluate(X_test, y_test)
print(model.metrics_names) # list of metric names the model is employing
print(results) # actual figure of metrics computed
print('loss: ', results[0])
print('mse: ', results[1])