《深度学习原理与TensorFlow实践》学习笔记(二)

来源:互联网 发布:unity3d 模型导出插件 编辑:程序博客网 时间:2024/06/05 03:41

      • TensorFlow基础使用
        • 环境准备
          • TensorFlow安装
          • 常用Python库介绍
        • 实例解析
          • Kaggle 平台及Titanic题目介绍
          • 代码解析
          • TensorBoard 可视化
        • 传统机器学习的优化技巧
          • 数据可视化
          • 特征工程
          • 经典机器学习算法模型
        • TFLearnKeras介绍及示例程序解析

TensorFlow基础使用

环境准备

TensorFlow安装
  • 官方文档:https://www.tensorflow.org/install/
常用Python库介绍
  • NumPy (link)
    • 为Python提供基础科学计算能力。
    • Numpy快速入门:http://cs231n.github.io/python-numpy-tutorial/
  • pandas (link)
    • 高性能数据结构和数据分析工具,提供了一种高效的DataFrame结构,可以自动对齐、补全数据,免去了由于输入数据缺失导致的问题。
  • Matplotlib (link)
    • 功能强大的画图引擎,可以制作高质量的图表。
  • PIL (link)
    • 标准图片处理库,能够方便地读入和输出包括 jpg、png 等多种常见类型的图像文件,还能对图像做切割、翻转、添加文字等变换。
  • Jupyter Notebook (link)
    • 开源的交互式数据分析处理平台,以 Web 网页的形式创建和分享文档,并可以在文档中插入代码段,交互式的查看代码运行结果。
  • scikit-learn (link)
    • 机器学习工具库,封装了多种常用的分类、回归、聚类、数据将为、数据预处理等方法。
  • OpenCV (link)
    • 跨平台机器视觉工具库,包含大量计算机视觉基本算法和高级功能。
  • One Platform to Have Them All – Anaconda (link) 个人推荐
    • 用于科学计算的Python发行版,支持各大系统平台,提供包管理和环境管理的功能,预装好了众多Package(包括上述Python库)。

实例解析

Kaggle 平台及Titanic题目介绍
  • Kaggle 平台是著名的数据分析竞赛平台
  • Kaggle Datasets 网址:https://www.kaggle.com/datasets
  • Titanic 题目网址:https://www.kaggle.com/c/titanic
  • 题目描述:
    • 输入:乘客信息,包括姓名、性别、客舱等级、年龄等
    • 输出:判别每个乘客是否幸存
  • 题目分析:
    • 二分类问题:Survived (=1) or Deceased (=0)
    • 数据规模:训练集891条信息,测试集418条信息
代码解析
  • 课程代码: https://github.com/DeepVisionTeam/TensorFlowBook/tree/master/Titanic
  • 数据读入及预处理
    • 使用pandas读入csv文件,读入为pandas.DataFrame对象
    • 预处理
      • 剔除空数据
      • 将 ‘Sex’ 字段转换为int类型(’male’=0,’female’=1)
      • 选取数值类型的字段,抛弃字符串类型字段
    • 根据先验选出有用的特征字段,例如,妇女和儿童有机会先上救生艇(性别,年龄),课程示例中选取了6个字段,即特征有6个维度
    • 利用 one-hot encoding 预处理标签,标签是一个二维 Vector,如,幸存的标签(1,0),遇难的标签(0, 1)
    • 利用 sk-learn 将训练数据分为训练集和验证集,防止过拟合
  • 构建计算图和训练迭代
    • 采用逻辑回归作为该二分类问题的分类器:y=softmax(xW+b)
    • 使用 tf.placeholder 声明输入占位符
    • tf.Variable() 声明 Weights 和 bias 变量
    • 构造前向传播计算图 y_pred = tf.nn.softmax(tf.matmul(input, weights) + bias)
    • 声明代价函数:使用交叉熵(cross-entropy)作为代价函数(注意极小误差值的加入)
    • 加入 SGD 优化算法
    • 计算准确率
    • 构建迭代 & 执行训练
      • 启动Session,代入数据(feed_dict)进行计算,训练结束后使用验证集评估训练效果,train_op 优化训练过程没有返回值,cost tensor 有返回值 loss_,loss = sess.run([train_op, cost], feed_dict=feed)
      • 数据量小可直接用 numpy,数据量更建议使用 tensor
  • 存储和加载训练模型等
    • 通过 tf.train.Save 来存储和加载模型
TensorBoard 可视化
  • TensorBoard 的工作方式是启动一个 Web 服务,该服务进程从 TensorFlow 程序执行所得的事件日志文件(event files)中读取概要(summary)数据,然后将数据在网页中绘制成可视化的图表。

传统机器学习的优化技巧

数据可视化
  • 帮助理解数据,分析特征重要程度,便于筛选特征
特征工程
  • 数据清洗 & 预处理
    • 对存在字段缺失、格式错误的样本进行处理
    • 二值化(如,是否贵族)、标准化、归一化(如,年龄0~1),可以加快收敛,减小类内干扰,避免过拟合
    • 根据阈值过滤掉方差小(相关性小)的变量
    • 通过计算变量与标签的相关系数,留下相关性高的特征
    • 根据决策树或随机森林,选择重要程度高的特征
    • 利用PCA降维等算法,对数据进行变换,选择区分度最高的特征组合
经典机器学习算法模型
  • 逻辑回归
  • SVM
  • 神经网络
  • 决策树
  • 随机森林(Titanic 竞赛中效果最好的方法)

TFLearn、Keras介绍及示例程序解析

  • TFLearn (link)
    • 基于 TensorFlow 的更高层 API 库,具有更高程度的模块化,无缝兼容 TensorFlow 原生用法
    • 官方推出的仿照 scikit-learn 设计的高级 API,对常用的分类回归模型进行了封装,使得实现一个分类器仅需几行代码。
  • Keras (link)
    • 高级神经网络API库,代码可运行于TensorFlow、CNTK或Theano之上,也支持 TensorBoard,与 TensorFlow 在性能上没有区别(以TF为后端)。
  • TensorFlow学习资源:Awesome TensorFlow https://github.com/jtoy/awesome-tensorflow

Edited by @AppleCore_Q | http://blog.csdn.net/applecore123456

阅读全文
0 0