【深度学习】TensorFlow基础API与高级API线性回归案例演示(1)

133 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

1. 高级API

  • tf.keras:Keras本来是一个独立的深度学习库,tensorflow将其加入过来,增加这部分模块在于快速构建模型
  • tf.estimator
    • 一个estimator相当于Model+Training+Evaluate的合体
    • 在模块中,已经实现了几种简单的分类器和回归器,比如Baseline,learning,DNN

2. 基础API

包括一些基本的神经网络组件。

  • tf.app:这个模块相当于为TensorFlow进行的脚本提供一个main函数入口,可以定义脚本运行的flags
  • tf.image:TensorFlow的图像处理操作。主要是一些颜色变换、变形和图像的编码和解码。
  • tf.gfile:这个模块提供了一组文件操作函数
  • tf.train:这个模块提供了一些训练器,与tf.nn组合起来,实现一些网络的优化计算
  • tf.nn
    • 这个模块提供了一些构建神经网络底层函数。TensorFlow构建网络的核心模块。其中包含了添加各种层的函数,比如卷积层、池化层等。
    • 由底层网络可以构建高级的神经网络组件

3. 案例演示

有了对TensorFlow基本API与高级API的初步了解,下面我们将做一个线性回归案例演示,首先说明案例要求,然后对案例实现思路进行分析,最后根据案例中每个步骤进行展开分析,包括所用到的API说明以及每个步骤的初步构建,例如模型构建、模型损失函数。

案例需求:

  • 使用TensorFlow的基础API与高级APi实现线性回归。
  • 案例提供真实数据(真实目标值与特征值),并且他们符合y+0.5x+1的线性关系
  • 案例有100个样本
  • x真实值形状:100行1列,因为有100个真实样本数据样本,每个样本有1个特征,即(100,1)
  • y真实值形状:100行1列,因为有100个真实目标值数据样本,每个样本的目标值只有一个,即(100,1)
  • 我们试图用线性回归进行拟合,得到最终线性回归方程。

实现思路:

  1. 模型构建:线性回归模型,例如:y=w1x1+w2x2+w3x3+...+by = w1x1 + w2x2 + w3x3 +...+ b
  2. 构造损失函数:均方误差MSE
  3. 优化损失:梯度下降法

模型构建:

从矩阵形状来看,y=wx+by=wx+b 满足(100,1)*(1,1)=(100,1)

  • tf.matmul(x,w)API:用来矩阵运算
  • y_predict(100,1) = x(100,1) * weights(1,1) + bias(1,1)

构造损失函数:

  • tf.square(error):用来求平方
  • tf.reduce_mean(error):用来求平均值
  • error = tf.reduce_mean(tf.square(y_predict - y_true))

优化损失:

  • 梯度下降优化器
    • tf.train.GradientDescentOptimizer(learn_rate)
      • 梯度下降优化
      • learn_rate:学习率大小
      • method:minimize(loss)
      • 该优化器中包含一个方法,我们希望损失函数越小越好
      • 返回值为一个梯度下降优化器
  • optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)