NLP学习笔记-预备任务
博客说明
此博客是本人学习自然语言处理(NLP)技术的学习笔记、心得体会,希望能和大家多多交流,共同进步!
环境搭建
安装Anaconda
- Anaconda简介
Anaconda是一种数据科学开发平台,它集成了多个第三方的数据科学库,如:Numpy,Pandas,Scipy,Scikit-learn等
- Anaconda下载地址
Anaconda官网 - 安装Anaconda注意事项
- 根据自己的操作系统和位数选择对应的Anaconda版本
- 选择对应的Python版本(最好是选择较为新的稳定版本,目前是Python3.7和Python2.7)
安装TensorFlow
- 由于我是Windows系统,所以在这里展示一下Windows安装TensorFlow。Anaconda安装完成之后,可以直接打开命令提示符使用pip安装TensorFlow
pip install tensorflow
以下是安装TensorFlow的部分截图:
- 验证TensorFlow是否安装成功
打开命令提示符,输入python
进入Python运行环境,然后输入import tensorflow as tf
,如果没有报错则表示TensorFlow已经成功安装
- 其他操作系统的TensorFlow安装教程
TensorFlow基础
TensorFlow 是一个编程系统, 使用图来表示计算任务。
Tensor + Flow
TensorFlow由Tensor和Flow两个单词组合而成,这两个单词也表明了TensorFlow的特点:
-
Tensor
表示张量的意思,是TensorFlow中核心的数据结构,可以简单理解为多维数组。零维是标量,一维是向量,二维是矩阵,三维及其以上就可以被简单称为张量。Tensor的概念有:阶、形状和数据类型,其中特别需要关注的是形状和数据类型 == >Tensor的阶、形状、数据类型
-
Flow
代表数据流动,说明了 TensorFlow 的另一个特点:使用计算图来执行任务。
计算图
-
由图的知识知道,图由节点和边构成。在 TensorFlow 的计算图中,图中的节点被称之为 op (operation 的缩写)。一个 op 获得 0 个或多个
Tensor
,执行计算,产生 0 个或多个Tensor
。 -
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。在构建阶段, op 的执行步骤被描述成一个图;在执行阶段, 使用会话执行执行图中的 op。
构建图:构建阶段
- 构建图就是创建源 op,说白了就是定义一些常量(
constant
)、变量(Variables
)、占位符(placeholder
)和一些运算方式(如add
、matmul
)等 - Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入
- 在启动 TensorFlow 时,程序就自带了一个默认图 (default graph)
简单示例如下:
import tensorflow as tf
#定义矩阵一定要弄清方括号数量!!!
#创建两个常量 op
matrix_1 = tf.constant([[2., 3.2]]) #1x2
matrix_2 = tf.constant([[2.], [3.2]]) #2x1
#创建一个运算 op
product = tf.matmul(matrix_1, matrix_2)
启动图:执行阶段
- 构造阶段完成后, 才能启动图.。启动图的第一步是创建一个
Session
对象,如果无任何创建参数,会话构造器将启动默认图 Session
对象在使用完后需要关闭以释放资源. 除了显式调用close
外, 也可以使用 Python 的上下文管理器with
来自动完成关闭动作。下面分别使用两种方法执行图:
#方法一
#创建回话
sess = tf.Session()
#调用 Session 的 run 方法
result = sess.run(product)
print(result)
#任务结束,关闭会话
sess.close()
#方法二
with tf.Session() as sess:
result = sess.run([product])
print(result)
变量(Variables)
- 作用
训练模型时,一般使用变量Variable
来保存和更新参数。变量用于保存张量,但是必须对它们进行初始化操作,变量可以被保存下来以供后续使用。 - 定义变量
使用tf.Variable()
定义变量
var = tf.Variable([1, 2], name='var')
- 初始化变量
必须先运行变量初始值设定项,然后才能运行模型中的其他操作。最简单的方法是添加一个运行所有变量初始值设定项的 optf.initialize_all_variables()
,并在使用模型之前运行该 op
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
...
# Add an op to initialize the variables.
init_op = tf.initialize_all_variables()
# Later, when launching the model
with tf.Session() as sess:
# Run the init operation.
sess.run(init_op)
...
# Use the model
...
- 保存变量和恢复变量
使用tf.train.Saver()
创建一个 Saver 对象来管理模型中的所有变量
saver = tf.train.Saver()
#保存变量
saver.save(sess, '/tmp/model.ckpt')
#恢复变量
saver.restore(sess, '/tmp/model.ckpt')
Fetch 操作
- 为了取回操作的输出内容, 可以在使用 Session 对象的
run
调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)
with tf.Session() as sess:
result = sess.run([mul, intermed])
print(result)
# 输出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]
Feed 机制
- feed 机制就是用于为计算图中的一个 op 添加数据进行计算,比如说用于
run
方法的feed_dict
参数
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)
with tf.Session() as sess:
print sess.run([output], feed_dict={input1:[7.], input2:[2.]})
# 输出:
# [array([ 14.], dtype=float32)]
NLP介绍
自然语言处理(NLP)是人工智能领域的一个子领域,主要是想让机器可以“理解”人类语言,使得机器的智能程度更高。
TensorFlow资料汇总
- 【干货】史上最全的Tensorflow学习资源汇总
- TensorFlow Examples
- TensorFlow Tutorials
- Tensorflow Tutorials using Jupyter Notebook