Python语言之图解机器学习:神经网络和 TensorFlow 的文本分类
小标 2018-07-16 来源 : 阅读 1306 评论 0

摘要:本文主要向大家介绍了Python语言之图解机器学习:神经网络和 TensorFlow 的文本分类,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言之图解机器学习:神经网络和 TensorFlow 的文本分类,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

开发人员经常说,如果你想开始机器学习,你应该首先学习算法。但是我的经验则不是。

我说你应该首先了解:应用程序如何工作。一旦了解了这一点,深入探索算法的内部工作就会变得更加容易。

那么,你如何 开发直觉学习,并实现理解机器学习这个目的?一个很好的方法是创建机器学习模型。

假设您仍然不知道如何从头开始创建所有这些算法,您可以使用一个已经为您实现所有这些算法的库。那个库是 TensorFlow。

在本文中,我们将创建一个机器学习模型来将文本分类到类别中。我们将介绍以下主题:

1. TensorFlow 的工作原理

2. 什么是机器学习模型

3. 什么是神经网络

4. 神经网络如何学习

5. 如何操作数据并将其传递给神经网络

6. 如何运行模型并获得预测结果

你可能会学到很多新东西,所以让我们开始吧!

TensorFlow

TensorFlow 是一个机器学习的开源库,由 Google 首创。库的名称帮助我们理解我们怎样使用它:tensors 是通过图的节点流转的多维数组。

tf.Graph

在 TensorFlow 中的每一个计算都表示为数据流图,这个图有两类元素:

· 一类 tf.Operation,表示计算单元

· 一类 tf.Tensor,表示数据单元

要查看这些是怎么工作的,你需要创建这个数据流图:

 

(计算x+y的图)

你需要定义 x = [1,3,6] 和 y = [1,1,1]。由于图用 tf.Tensor 表示数据单元,你需要创建常量 Tensors:

Python

import tensorflow as tf

x = tf.constant([1,3,6]) 

y = tf.constant([1,1,1])

   

现在你将定义操作单元:

Python

import tensorflow as tf

x = tf.constant([1,3,6]) 

y = tf.constant([1,1,1])

op = tf.add(x,y)

   

你有了所有的图元素。现在你需要构建图:

Python 

import tensorflow as tf

my_graph = tf.Graph()

with my_graph.as_default():

    x = tf.constant([1,3,6]) 

    y = tf.constant([1,1,1])

    op = tf.add(x,y)

   

这是 TensorFlow 工作流的工作原理:你首先要创建一个图,然后你才能计算(实际上是用操作‘运行’图节点)。你需要创建一个 tf.Session 运行图。

tf.Session

tf.Session 对象封装了 Operation 对象的执行环境。Tensor 对象是被计算过的(从文档中)。为了做到这些,我们需要在 Session 中定义哪个图将被使用到:

Python

import tensorflow as tf

my_graph = tf.Graph()

with tf.Session(graph=my_graph) as sess:

    x = tf.constant([1,3,6]) 

    y = tf.constant([1,1,1])

    op = tf.add(x,y)

   

为了执行操作,你需要使用方法 tf.Session.run()。这个方法通过运行必要的图段去执行每个 Operation 对象并通过参数 fetches 计算每一个 Tensor 的值的方式执行 TensorFlow 计算的一’步’:

Python

   

import tensorflow as tf

my_graph = tf.Graph()

with tf.Session(graph=my_graph) as sess:

    x = tf.constant([1,3,6]) 

    y = tf.constant([1,1,1])

    op = tf.add(x,y)

    result = sess.run(fetches=op)

    print(result)

>>> [2 4 7]

   

预测模型

现在你知道了 TensorFlow 的工作原理,那么你得知道怎样创建预测模型。简而言之

机器学习算法+数据=预测模型

构建模型的过程就是这样:

 

(构建预测模型的过程)

正如你能看到的,模型由数据“训练过的”机器学习算法组成。当你有了模型,你就会得到这样的结果:

 

(预测工作流)

你创建的模型的目的是对文本分类,我们定义了:

input: text, result: category

我们有一个使用已经标记过的文本(每个文本都有了它属于哪个分类的标记)训练的数据集。在机器学习中,这种任务的类型是被称为监督学习。

 “我们知道正确的答案。该算法迭代的预测训练数据,并由老师纠正
” — Jason Brownlee

你会把数据分成类,因此它也是一个分类任务。

为了创建这个模型,我们将会用到神经网络。

神经网络

神经网络是一个计算模型(一种描述使用机器语言和数学概念的系统的方式)。这些系统是自主学习和被训练的,而不是明确编程的。

神经网络是也从我们的中枢神经系统受到的启发。他们有与我们神经相似的连接节点。

 

(一个神经网络)

感知器是第一个神经网络算法。这篇文章 很好地解释了感知器的内部工作原理(“人工神经元内部” 的动画非常棒)。

为了理解神经网络的工作原理,我们将会使用 TensorFlow 建立一个神经网络架构。在这个例子中,这个架构被 Aymeric Damien 使用过。

神经网络架构

神经网络有两个隐藏层(你得选择 网络会有多少隐藏层,这是结构设计的一部分)。每一个隐藏层的任务是 把输入的东西转换成输出层可以使用的东西。

隐藏层 1

 

(输入层和第一个隐藏层)

你也需要定义第一个隐藏层会有多少节点。这些节点也被称为特征或神经元,在上面的例子中我们用每一个圆圈表示一个节点。

输入层的每个节点都对应着数据集中的一个词(之后我们会看到这是怎么运行的)

如 这里 所述,每个节点(神经元)乘以一个权重。每个节点都有一个权重值,在训练阶段,神经网络会调整这些值以产生正确的输出(过会,我们将会学习更多关于这个的信息)

除了乘以没有输入的权重,网络也会增加一个误差 (在神经网络中误差的角色)。

在你的架构中,将输入乘以权重并将值与偏差相加,这些数据也要通过激活函数传递。这个激活函数定义了每个节点的最终输出。比如说:想象一下,每一个节点是一盏灯,激活函数决定灯是否会亮。

有很多类型的激活函数。你将会使用 Rectified Linear Unit (ReLu)。这个函数是这样定义的:

f(x) = max(0,x)  [输出 x 或者 0(零)中最大的数]

例如:如果 x = -1,  f(x) = 0(zero); 如果 x = 0.7, f(x) = 0.7.

隐藏层 2

第二个隐藏层做的完全是第一个隐藏层做的事情,但现在第二层的输入是第一层的输出。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程