基于波士顿住房数据集训练简单的MLP回归模型

人工智能 深度学习
多层感知机(MLP)有着非常悠久的历史,多层感知机(MLP)是深度神经网络(DNN)的基础算法,每个MLP模型由一个输入层、几个隐藏层和一个输出层组成.

[[422501]]

多层感知机(MLP)有着非常悠久的历史,多层感知机(MLP)是深度神经网络(DNN)的基础算法

MLP基础知识

  • 目的:创建用于简单回归/分类任务的常规神经网络(即多层感知器)和Keras

MLP结构

  • 每个MLP模型由一个输入层、几个隐藏层和一个输出层组成
  • 每层神经元的数目不受限制

具有一个隐藏层的MLP

- 输入神经元数:3 - 隐藏神经元数:4 - 输出神经元数:2

回归任务的MLP

  • 当目标(「y」)连续时
  • 对于损失函数和评估指标,通常使用均方误差(MSE)
  1. from tensorflow.keras.datasets import boston_housing 
  2. (X_train, y_train), (X_test, y_test) = boston_housing.load_data() 

数据集描述

  • 波士顿住房数据集共有506个数据实例(404个培训和102个测试)
  • 13个属性(特征)预测“某一地点房屋的中值”
  • 文件编号:https://keras.io/datasets/

1.创建模型

  • Keras模型对象可以用Sequential类创建
  • 一开始,模型本身是空的。它是通过「添加」附加层和编译来完成的
  • 文档:https://keras.io/models/sequential/
  1. from tensorflow.keras.models import Sequential 
  2.  
  3. model = Sequential() 

1-1.添加层

  • Keras层可以「添加」到模型中
  • 添加层就像一个接一个地堆叠乐高积木
  • 文档:https://keras.io/layers/core/
  1. from tensorflow.keras.layers import Activation, Dense 
  2. # Keras model with two hidden layer with 10 neurons each  
  3. model.add(Dense(10, input_shape = (13,)))    # Input layer => input_shape should be explicitly designated 
  4. model.add(Activation('sigmoid')) 
  5. model.add(Dense(10))                         # Hidden layer => only output dimension should be designated 
  6. model.add(Activation('sigmoid')) 
  7. model.add(Dense(10))                         # Hidden layer => only output dimension should be designated 
  8. model.add(Activation('sigmoid')) 
  9. model.add(Dense(1))                          # Output layer => output dimension = 1 since it is regression problem 
  10. # This is equivalent to the above code block 
  11. model.add(Dense(10, input_shape = (13,), activation = 'sigmoid')) 
  12. model.add(Dense(10, activation = 'sigmoid')) 
  13. model.add(Dense(10, activation = 'sigmoid')) 
  14. model.add(Dense(1)) 

1-2.模型编译

  • Keras模型应在培训前“编译”
  • 应指定损失类型(函数)和优化器
  • 文档(优化器):https://keras.io/optimizers/
  • 文档(损失):https://keras.io/losses/
  1. from tensorflow.keras import optimizers 
  2.  
  3. sgd = optimizers.SGD(lr = 0.01)    # stochastic gradient descent optimizer 
  4.  
  5. model.compile(optimizer = sgd, loss = 'mean_squared_error', metrics = ['mse'])    # for regression problems, mean squared error (MSE) is often employed 

模型摘要

  1. model.summary() 
  1. odel: "sequential" 
  2. _________________________________________________________________ 
  3. Layer (type)                 Output Shape              Param #    
  4. ================================================================= 
  5. dense (Dense)                (None, 10)                140        
  6. _________________________________________________________________ 
  7. activation (Activation)      (None, 10)                0          
  8. _________________________________________________________________ 
  9. dense_1 (Dense)              (None, 10)                110        
  10. _________________________________________________________________ 
  11. activation_1 (Activation)    (None, 10)                0          
  12. _________________________________________________________________ 
  13. dense_2 (Dense)              (None, 10)                110        
  14. _________________________________________________________________ 
  15. activation_2 (Activation)    (None, 10)                0          
  16. _________________________________________________________________ 
  17. dense_3 (Dense)              (None, 1)                 11         
  18. _________________________________________________________________ 
  19. dense_4 (Dense)              (None, 10)                20         
  20. _________________________________________________________________ 
  21. dense_5 (Dense)              (None, 10)                110        
  22. _________________________________________________________________ 
  23. dense_6 (Dense)              (None, 10)                110        
  24. _________________________________________________________________ 
  25. dense_7 (Dense)              (None, 1)                 11         
  26. ================================================================= 
  27. Total params: 622 
  28. Trainable params: 622 
  29. Non-trainable params: 0 
  30. _________________________________________________________________ 

2.培训

  • 使用提供的训练数据训练模型
  1. model.fit(X_train, y_train, batch_size = 50, epochs = 100, verbose = 1) 

3.评估

  • Keras模型可以用evaluate()函数计算
  • 评估结果包含在列表中
  • 文档:https://keras.io/metrics/
  1. results = model.evaluate(X_test, y_test) 
  1. print(model.metrics_names)     # list of metric names the model is employing 
  2. print(results)                 # actual figure of metrics computed 

  1. print('loss: ', results[0]) 
  2. print('mse: ', results[1]) 

 

责任编辑:姜华 来源: Python之王
相关推荐

2023-10-27 10:15:36

机器狗

2013-04-19 10:17:57

波士顿马拉松爆炸的大数据大数据全球技术峰会

2013-05-09 10:31:10

2013-05-07 10:46:01

2018-08-17 06:01:46

工业物联网IIoT物联网

2013-04-18 17:44:14

2013-05-08 09:33:47

2021-11-04 10:16:51

机器狗人工智能波士顿

2020-08-20 10:37:23

疫情智慧城市休斯顿

2024-03-01 09:00:00

大型语言模型数据集LLM

2023-02-16 08:00:00

数据流客户端开发数据集

2022-03-28 09:00:00

SQL数据库机器学习

2024-01-29 00:24:07

图像模型预训练

2022-01-11 09:47:10

波士顿机器狗人工智能

2011-10-25 10:41:25

2020-06-28 14:22:26

人脸识别人工智能数据

2023-04-23 09:28:00

模型开源

2019-04-09 16:37:35

PTC工作员工

2012-06-27 13:13:25

HTML5

2013-04-22 14:52:51

点赞
收藏

51CTO技术栈公众号