摘要:本文主要向大家介绍了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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号