01 快速了解tensorflow API
对于一个线性分类器,只需要使用tf中的分类器就可以实现简单的预测
#导入包
import tensorflow as tf
# 创建线性分类器
classifier = tf.estimator.LinearClassifier()
# 用样例数据训练模型
classifier.train(input_fn=train_input_fn, steps=2000)
# 使用模型来预测
predictions = classifier.predict(input_fn=predict_input_fn)
下图显示了 TensorFlow 工具包的当前层次结构:
图 1. TensorFlow 工具包层次结构下表总结了不同层的用途:
工具包 | 说明 |
---|---|
Estimator (tf.estimator) | 高级 OOP API。 |
tf.layers/tf.losses/tf.metrics | 用于常见模型组件的库。 |
TensorFlow | 低级 API |
TensorFlow 由以下两个组件组成:
- 图协议缓冲区
- 执行(分布式)图的运行时
这两个组件类似于 Java 编译器和 JVM。正如 JVM 会实施在多个硬件平台(CPU 和 GPU)上一样,TensorFlow 也是如此。
应该使用哪个 API?
应该使用能够解决问题的最高级抽象层。较高级别的抽象层更易于使用,但(设计方面)不够灵活。建议先从最高级 API 入手,让所有组件正常运作起来。
如果希望在某些特殊建模方面能够更加灵活一些,则可以降低一个级别。
注意,每个级别都是使用低级 API 构建的,因此降低层次结构级别应该比较直观。
tf.estimator API
用 tf.estimator 来完成机器学习所做的一切都可以在较低级别(原始)的 TensorFlow 中完成,但使用 tf.estimator 会大大减少代码行数。
tf.estimator 与 scikit-learn API 兼容。 scikit-learn 是极其热门的 Python 开放源代码机器学习库,拥有超过 10 万名用户,其中包括许多 Google 员工。
以下是在 tf.estimator 中实现的线性回归程序的格式:
import tensorflow as tf
# Set up a linear classifier.
classifier = tf.estimator.LinearClassifier()
# Train the model on some example data.
classifier.train(input_fn=train_input_fn, steps=2000)
# Use it to predict.
predictions = classifier.predict(input_fn=predict_input_fn)
一些练习术语
机器学习速成课程练习中的常用超参数
很多编码练习都包含以下超参数:
steps:训练迭代的总次数。一步计算一批样本产生的损失,然后使用该值修改一次模型的权重。
batch size:单步的样本数量(随机选择)。例如,SGD 的批次大小为 1。
以下公式成立:
总共被训练的样本数 = batch size * steps
有些练习中会出现以下方便变量:
periods:控制报告的粒度。例如,如果 periods 设为 7 且 steps 设为 70,则练习将每 10 步输出一次损失值(即 7 次)。与超参数不同,我们不希望您修改 periods 的值。请注意,修改 periods 不会更改模型所学习的规律。