敲开TensorFlow的大门
本文最后更新于:2017年4月14日 凌晨
目前的AI还处在比较低级的阶段,但是像TensorFlow的出现,极大的推进了AI的进程,使得各类应用可以以最低的成本最快的的时间接入AI,今天我们就通过一个简单的模型训练来敲开TensorFlow的大门。
AI的模型训练其实就是: 对模型变量的值进行不断调整,直到训练模型对所有可能的变量求出的结果都无限接近目标值,而我们要做的工作就是给足够的数据进行训练,以及不断优化训练算法
I. macOS Sierra中配置运行环境
官方教程地址: https://www.tensorflow.org/install/install_mac#installing_with_virtualenv
一共有四种方式,根据官方推荐,我采用的是virtualenv
由于我的MBP没有NVIDIA CUDA GPU,因此这里我没有配GPU
由于我的Python是2.7.10版本,并且没有支持GPU,因此执行:
如果是其他情况的请参照官方教程
验证安装
官方地址: https://www.tensorflow.org/install/install_mac#ValidateYourInstallation
II. 训练模型案例
该案例来自官方的入门案例
该次模型训练的性能决定因素是: 优化器选择、精度选择、训练数据
通过高级的接口快速的实现上面的模型训练
当然我们也可以通过tf.contrib.learn.Estimator
这个高级接口,再使用低级接口来定制Linear Regressor算法模型(实际上内置的tf.contrib.learn.LinearRegressor
也是继承自tf.contrib.learn.Estimator
的)。当然我们不是通过继承,是通过提供model_fn
来告诉他训练的步骤、如果评估等:
III. 常见的API
具体API可以参看官网文档
- 定义常量:
tf.constant(value, type)
,如tf.constant(3.0, tf.float32)
,当type没有给定的时候,会根据所给value定义 - 定义变量:
tf.placeholder(type)
, 如tf.placeholder(tf.float32)
- 定义训练模型:
tf.Variable([value], type]
, 如tf.Variable([.3], tf.float32)
- 计算结果: 通过
tf.Session()
的run
去计算 - 初始化训练模型:
tf.global_variables_initializer()
,对其进行复位运行起对象即可,如Session对象是sees
,初始化模型对象是init
时:sess.run(init)
- 对模型重新赋值: 如对
W
模型重新赋值:fixW = tf.assign(W, [-1.])
- 求平方:
tf.square(value)
- 求和:
tf.reduce_sum(value)
欢迎阅读另一篇文章训练识别数字图片的模型,进一步的了解TensorFlow的使用。