您的当前位置:首页正文

tensorflow get started

来源:图艺博知识网

tensorflow get stared

目录

  • 机器学习是什么
  • get_stared
  • 常见的7个步骤

机器学习是什么

此处我们可以将机器学习的定义简化为 8 个字:

『使用数据解决问题』

这一表述也许太简单了,但却足以充分表达我们的目标。尤其是当我们将这句话拆分成两个部分:「使用数据」和「解决问题」,我们会发现两者充分勾勒出机器学习的两个重要层面(训练和预测)。

数据解决问题.pic.jpg

「使用数据」也就是常说的「训练」,而「解决问题」则被当作是「预测」或是推理的过程。

将这两者联系起来的部分叫做模型。我们使用数据集来训练模型以实现更好、更有用的预测。训练完成后,这一模型就可以通过部署来预测未曾出现过的数据。

机器学习核心.pic.jpg

通过数据训练处模型,使用模型来预测或解决问题。

get_stared

  1. 安装tensorflow

    略...

  2. 获取示例代码

    git clone 
    cd models/samples/core/get_started/
    
  3. 运行程序

    python premade_estimator.py
    

编程堆栈

image.png

Estimator:代表一个完整的模型。Estimator API 提供一些方法来训练模型、判断模型的准确率并生成预测。

DataSet:构建数据输入管道。Dataset API 提供一些方法来加载和操作数据,并将数据馈送到您的模型中。

对鸢尾花进行分类

  • 导入和解析数据集。

    鸢尾花程序需要下列两个 .csv 文件中的数据:

     # Call load_data() to parse the CSV file.
    (train_feature, train_label), (test_feature, test_label) = load_data()
    
  • 创建特征列以描述数据。

    # Create feature columns for all features.
    my_feature_columns = []
    for key in train_x.keys():
    my_feature_columns.append(tf.feature_column.numeric_column(key=key))
    
  • 选择模型类型。

    神经网络可以发现特征与标签之间的复杂关系。

    创建了一个两个隐藏层(每层数量为10)的DNN

    # Build 2 hidden layer DNN with 10, 10 units respectively.
    classifier = tf.estimator.DNNClassifier(
    feature_columns=my_feature_columns,
    # Two hidden layers of 10 nodes each.
    hidden_units=[10, 10],
    # The model must choose between 3 classes.
    n_classes=3)
    
  • 训练模型。

        classifier.train(
        input_fn=lambda:train_input_fn(train_feature, train_label, args.batch_size),
        steps=args.train_steps)
    
  • 评估模型的效果。

        # Evaluate the model.
    eval_result = classifier.evaluate(
        input_fn=lambda:iris_data.eval_input_fn(test_x, test_y,
                                                args.batch_size))
    
  • 让经过训练的模型进行预测。

    每个 Estimator 均提供一个 predict 方法,premade_estimator.py 通过如下方式调用该方法:

    predictions = classifier.predict(
    input_fn=lambda:eval_input_fn(predict_x, batch_size=args.batch_size))
    

python premade_estimator.py

"""An Example of a DNNClassifier for the Iris dataset."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import argparse
import tensorflow as tf

import iris_data


parser = argparse.ArgumentParser()
parser.add_argument('--batch_size', default=100, type=int, help='batch size')
parser.add_argument('--train_steps', default=1000, type=int,
                    help='number of training steps')

def main(argv):
    args = parser.parse_args(argv[1:])

    # Fetch the data
    (train_x, train_y), (test_x, test_y) = iris_data.load_data()

    # Feature columns describe how to use the input.
    my_feature_columns = []
    for key in train_x.keys():
        my_feature_columns.append(tf.feature_column.numeric_column(key=key))

    # Build 2 hidden layer DNN with 10, 10 units respectively.
    classifier = tf.estimator.DNNClassifier(
        feature_columns=my_feature_columns,
        # Two hidden layers of 10 nodes each.
        hidden_units=[10, 10],
        # The model must choose between 3 classes.
        n_classes=3)

    # Train the Model.
    classifier.train(
        input_fn=lambda:iris_data.train_input_fn(train_x, train_y,
                                                 args.batch_size),
        steps=args.train_steps)

    # Evaluate the model.
    eval_result = classifier.evaluate(
        input_fn=lambda:iris_data.eval_input_fn(test_x, test_y,
                                                args.batch_size))

    print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result))

    # Generate predictions from the model
    expected = ['Setosa', 'Versicolor', 'Virginica']
    predict_x = {
        'SepalLength': [5.1, 5.9, 6.9],
        'SepalWidth': [3.3, 3.0, 3.1],
        'PetalLength': [1.7, 4.2, 5.4],
        'PetalWidth': [0.5, 1.5, 2.1],
    }

    predictions = classifier.predict(
        input_fn=lambda:iris_data.eval_input_fn(predict_x,
                                                labels=None,
                                                batch_size=args.batch_size))

    template = ('\nPrediction is "{}" ({:.1f}%), expected "{}"')

    for pred_dict, expec in zip(predictions, expected):
        class_id = pred_dict['class_ids'][0]
        probability = pred_dict['probabilities'][class_id]

        print(template.format(iris_data.SPECIES[class_id],
                              100 * probability, expec))


if __name__ == '__main__':
    tf.logging.set_verbosity(tf.logging.INFO)
    tf.app.run(main)

常见的7个步骤

  1. 搜集数据

    搜集的数据和质量将决定最终形成的预测模型的好坏。

  1. 数据准备

    对数据进行去重,规范化和纠错等等

    将数据分为两部分:训练集和测试集

  2. 选择模型

    已存在的模型:处理图像,文本,音频等
    自定义模型:其他模型不适用时

  3. 训练模型

    使用训练数据来训练模型

  4. 评估模型

    使用测试数据来评估

  5. 参数微调

    重复次数,学习频率,初始条件

  6. 预测

    解决问题

Top