Category: Tensorflow

机器学习笔记5-Tensorflow高级API之tf.estimator

机器学习笔记5-Tensorflow高级API之tf.estimator

前言 本文接着上一篇继续来聊Tensorflow的接口,上一篇中用较低层的接口实现了线性模型,本篇中将用更高级的API——tf.estimator来改写线性模型。 还记得之前的文章《机器学习笔记2 – sklearn之iris数据集》吗?本文也将使用tf.estimator改造该示例。 本文代码都是基于API版本r1.4。本文中本地开发环境为Pycharm,在文中不再赘述。 tf.estimator 内置模型 比起用底层API“较硬”的编码方式,tf.estimator的在使用时更像是对模型描述(或定义)的过程。Tensorflow把训练、评估、数据处理等这些过程全部封装起来,让开发人员更专注于解决实际问题的建模过程,而不是纠结于代码实现过程。如果用tf.estimator改造上一篇中的线性模型的话,完整代码如下: 本例中使用的库numpy是一个开源工具,是一个功能非常强大且执行效率很高的库,主要用作数值处理及矩阵操作等。 import numpy as np import tensorflow as tf # 定义特性列,线性模型中特性是列是x,shape=[1],因此定义如下: feature_columns = [tf.feature_column.numeric_column(“x”, shape=[1])] # 使用tf.estimator内置的LinearRegressor来完成线性回归算法 # tf.estimator提供了很多常规的算法模型以便用户调用,不需要用户自己重复造轮子 # 到底为止,短短两行代码我们的建模工作就已经完成了 estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns) # 有了模型之后,我们要使用模型完成训练->评估->预测这几个步骤 # 训练数据依旧是(1.,0.),(2.,-1.),(3.,-2.),(4.,-3.)这几个点,拆成x和y两个维度的数组 x_train = np.array([1., 2., 3., 4.]) y_train = np.array([0., -1., -2., -3.]) # […]

机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

前言 在上一篇中,我简单介绍了一下Tensorflow以及在本机及阿里云的PAI平台上跑通第一个示例的步骤。在本篇中我将稍微讲解一下几个基本概念以及Tensorflow的基础语法。 本文代码都是基于API版本r1.4。本文中本地开发环境为Pycharm,在文中不再赘述。 名词解释 核心概念 和很多开发语言设计一样,Tensorflow提供了多个级别的客户端API,其中最底层叫Tensorflow Core,使用这一层API可以完全控制Tensorflow,但是使用难度上也相对较大。在Tensorflow Core之上创建的更高级别的API,对开发者更友好,更易于使用、学习起来也更简单。 Tensorflow中该数据的核心单位是张量(Tensor),张量就是将一组基础数值,组织成形态(Shape)为一个任意维度的数组,张量的阶(Rank)就是维度的数量。概念还是挺拗口的,举个例子就非常明了了: [1., 2., 3.] # Rank=1, Shape=[3] [[1., 2., 3.], [4., 5., 6.]] # Rank=2; Shape=[2, 3]: 代表第一层数组里包含2个子数组,每个子数组里包含3个值 [[[1., 2., 3.]], [[7., 8., 9.]]] # Rank=3; Shape=[2, 1, 3] : 代表第一层数组里包含2个数组,每个子数组里又包含1个子数组,子数组里包含3个元素 Tensorflow其实就是针对张量的计算图,计算图中的每个节点(Node)之间是有向连接的,看起来像张量的流动图(即从输入开始,流过一系列的节点,最终输出结果),Tensorflow也由此得名。官方原话是: What is a Data Flow Graph? Data flow graphs describe […]

机器学习笔记3-Tensorflow简介

机器学习笔记3-Tensorflow简介

前言 前面两篇主要写了一些机器学习的基础概念,从本篇开始我们来了解下深度学习。深度学习是机器学习的一个子集,是一种特殊的数学模型。同样是从输入到输出,深度学习在这两者之间会有很多层称为“隐层”(Hidden Layers)的层,每一层将会将输入内容进行计算并自我调节,最终得到合理模型,这种数学模型非常像人类目前对大脑工作原理的认知,所以也称之为“人工神经网络”。 现在市面上有数十种深度学习框架:Wiki传送门。一个个学过来肯定精力不够,那我们就学综合评分最高的那个:Tensorflow。 Tensorflow是由Google团队在2015年11月9日以Apache 2.0开源许可证开源的,但刚发布的版本有诸多缺陷:bug比较多、性能比较差、使用难度比较高。在2017年2月16日,Google宣布Tensorflow 1.0正式发布,该版本适用于工业生产场景。所以在该版本发布之后,对深度学习领域产生了极大的影响,其大大简化了编写深度学习的代码难度,并且在Google这面大旗下,被各种专业人员以及机器学习爱好者所推崇(截止2018年1月9日,Tensorflow在Github上已经有7193个Watch,85038个Star和41555个Fork)。 Tensorflow在短短发布后的一年不到的时间里,已经跃居为综合排名第一的深度学习框架。为什么会如此火爆呢?我个人猜测理由如下: 深度学习目前是大趋势(所以得抓紧学习,抓住机遇) Google的技术实力太强大,开源过很多项目都非常成功(比如Android),所以跟着Google走可能不会让我们失望 接口丰富易用且支持多种语言(底层是C++实现的,这里指的是客户端调用底层API的语言),如Python、C++、Java、Go 易于部署,包括分布式部署 本机安装Tensorflow 如果你的电脑性能还不错,可以考虑直接在本机安装Tensorflow(官方安装文档传送门),优先考虑使用Anaconda来安装,按照官方教程一步步执行即可。 安装之后,需要在Pycharm中执行Tensorflow的代码,我们这里先用简单的输出常量的代码为例(此代码也是后文中demo1.py中的代码): import tensorflow as tf node1 = tf.constant(3.0, dtype=tf.float32) node2 = tf.constant(4.0) # also tf.float32 implicitly print(node1, node2) sess = tf.Session() print(sess.run([node1, node2])) 常见错误汇总 执行代码的时候,你可能会遇到很多错误,我这里整理了一份我在此过程中遇到的错误以及对应的解决方案供大家参考: 错误提示 解决方案 Anaconda installation is not found https://stackoverflow.com/questions/47624777/pycharm-anaconda-installation-is-not-found ImportError: Could not […]