PaddlePaddle学习笔记1

PaddlePaddle学习笔记1

    • 人工智能、机器学习、深度学习的关系
    • 神经网络
    • 使用飞桨构建波士顿房价预测模型
      • 数据处理
      • 模型设计
      • 训练配置
      • 训练过程
      • 保存并测试模型
        • 保存模型
        • 测试模型

跟着飞桨平台零基础学习深度学习,目前是第二天学习,我先梳理一下两天的学习成果。

人工智能、机器学习、深度学习的关系

以前我对三者关系的认识存在一定的误区,以为机器学习和深度学习分别是人工智能的分支。通过学习,明白了三者之间的正确关系:人工智能>机器学习>深度学习。

PaddlePaddle学习笔记1_第1张图片

  • 人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,是计算机科学的一个分支。
  • 机器学习(Machine Learning)是一门人工智能的科学,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习的实现可以分成两步:训练和预测。
  • 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。

神经网络

神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。主要任务是根据生物神经网络的原理和实际应用的需要建造实用的人工神经网络模型,设计相应的学习算法,模拟人脑的某种智能活动,然后在技术上实现出来用以解决实际问题。

  • 神经元:神经网络中每个节点称为神经元,由两部分组成:
    • 加权和:将所有输入加权求和。
    • 非线性变换(激活函数):加权和的结果经过一个非线性函数变换,让神经元计算具备非线性的能力。
  • 多层连接:大量这样的节点按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
  • 前向计算:从输入计算输出的过程,顺序从网络前至后。
  • 计算图:以图形化的方式展现神经网络的计算逻辑又称为计算图。

使用飞桨构建波士顿房价预测模型

构建神经网络/深度学习模型的5个基本步骤:

  1. 数据处理。从本地或URL读取数据,并完成预处理操作(如数据校验、格式化转化等),保证模型可读取。
  2. 模型设计。网络结构设计,相当于模型的假设空间,即模型能够表达的关系集合。
  3. 训练配置。设定模型采用的寻解算法,即优化器,并指定计算资源。
  4. 训练过程。循环调用训练过程,每轮都包括前向计算、损失函数(优化目标)和后向传播三个步骤。
  5. 模型保存。将训练好的模型保存,模型预测时调用。

加载飞桨框架的相关类库

代码如下:

#加载飞桨、Numpy和相关类库
import paddle
import paddle.fluid as fluid
import paddle.fluid.dygraph as dygraph
from paddle.fluid.dygraph import Linear
import numpy as np
import os
import random
  • paddle/fluid:飞桨的主库,目前大部分的实用函数均在paddle.fluid包内。
  • dygraph:动态图的类库。
  • Linear:神经网络的全连接层函数,即包含所有输入权重相加和激活函数的基本神经元结构。在房价预测任务中,使用只有一层的神经网络(全连接层)来实现线性回归模型。

数据处理

数据处理包含五个部分:数据导入、数据形状变换、数据集划分、数据归一化处理和封装load data函数。数据预处理后,才能被模型调用。代码如下:

def load_data():
    # 从文件导入数据
    datafile = './work/housing.data'
    data = np.fromfile(datafile, sep=' ')

    # 每条数据包括14项,其中前面13项是影响因素,第14项是相应的房屋价格中位数
    feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', \
                      'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]
    feature_num = len(feature_names)

    # 将原始数据进行Reshape,变成[N, 14]这样的形状
    data = data.reshape([data.shape[0] // feature_num, feature_num])

    # 将原数据集拆分成训练集和测试集
    # 这里使用80%的数据做训练,20%的数据做测试
    # 测试集和训练集必须是没有交集的
    ratio = 0.8
    offset = int(data.shape[0] * ratio)
    training_data = data[:offset]

    # 计算train数据集的最大值,最小值,平均值
    maximums, minimums, avgs = training_data.max(axis=0), training_data.min(axis=0), \
                                 training_data.sum(

你可能感兴趣的:(百度飞桨深度学习笔记,人工智能,机器学习,深度学习,神经网络)