持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
1. 高级API
tf.keras:Keras本来是一个独立的深度学习库,tensorflow将其加入过来,增加这部分模块在于快速构建模型tf.estimator- 一个estimator相当于Model+Training+Evaluate的合体
- 在模块中,已经实现了几种简单的分类器和回归器,比如Baseline,learning,DNN
2. 基础API
包括一些基本的神经网络组件。
tf.app:这个模块相当于为TensorFlow进行的脚本提供一个main函数入口,可以定义脚本运行的flagstf.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) - 我们试图用线性回归进行拟合,得到最终线性回归方程。
实现思路:
- 模型构建:线性回归模型,例如:
- 构造损失函数:均方误差MSE
- 优化损失:梯度下降法
模型构建:
从矩阵形状来看, 满足(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)