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 不会更改模型所学习的规律。

推荐阅读更多精彩内容