Datawhale《深度学习-NLP》预备任务

预备任务

  1. tensorflow安装
    推荐Anaconda(针对自己操作系统和位数下载对应版本);推荐用conda create创建对应的python环境(注:某些python版本可能不支持tensorflow);通过pip install来安装tensorflow。

参考:
tensorflow安装教程 http://www.tensorflownews.com/series/tensorflow-install-tutorial/

  1. tensrflow基础
    关注图、会话、tensor、变量、feed和fetch。
    使用图(graphs)来表示计算任务、在被称之为会话(Session)的上下文(context)中执行图、使用tensor表示数据、通过变量(Variable)维护状态;使用feed和fetch为任意的操作赋值或者从其中获取数据。

    参考:
    TENSORFLOW从入门到精通之——TENSORFLOW基本操作 :http://www.tensorflownews.com/2018/03/28/tensorflow_base/
    tensorflow简介: http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/introduction.html
    tensorflow基本使用 :http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html
    莫凡tensorflow :https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/

    TensorFlow-Examples: https://github.com/aymericdamien/TensorFlow-Examples(关注Hello World、Basic Operations、Linear Regression、Simple Neural Network)

    史上最全的Tensorflow学习资源汇总: https://zhuanlan.zhihu.com/p/35515805

  2. NLP
    微软周明:自然语言处理的历史与未来 http://zhigu.news.cn/2017-06/08/c_129628590.html

Tensorflow结构

在这里插入图片描述

Tensorflow的基本使用

import tensorflow as tf

# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
# 加到默认图中.
#
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])

# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)

Tensorflow使用图来表示计算任务

TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为op(operation)

Tensor

一个 op(operation)获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组.

会话 (Session)

图必须在会话 (Session)里被启动. 会话 将图的 op(operation) 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. 在 Python 语言中, 返回的 tensor 是 numpy ndarray对象; 在 C 和 C++ 语言中, 返回的 tensor 是 tensorflow::Tensor 实例.

Session 对象在使用完后需要关闭以释放资源. 可以使用 “with” 代码块 来自动完成关闭动作.

with tf.Session() as sess:
  result = sess.run([product])
  print result

变量

在TensorFlow中,变量(Variable)是特殊的张量(Tensor),它的值可以是一个任何类型和形状的张量。与其他张量不同,变量存在于单个 session.run 调用的上下文之外,也就是说,变量存储的是持久张量,当训练模型时,用变量来存储和更新参数。除此之外,在调用op之前,所有变量都应被显式地初始化过。

import tensorflow as tf
v = tf.Variable([1,2,3])   #创建变量v,为一个array
print(v)  #查看v的shape,不是v的值。结果是: <tf.Variable 'Variable:0' shape=(3,) dtype=int32_ref>
with tf.Session() as sess:
	sess.run(v.initializer)     #运行变量的initializer。调用op之前,所有变量都应被显式地初始化过。
	sess.run(v)     #查看v的值,结果是:array([1, 2, 3])

除了我们自己填写变量的值外,一般可以使用TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。

r = tf.Variable(tf.random_normal([20, 10], stddev=0.35))     #以标准差0.35的正太分布初始化一个形状为[20,40]的张量
z = tf.Variable(tf.zeros([20]))  #初始化一个形状为[20]的张量, 里面的元素值全部为0.

Fetch

为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果.你也可以在 op 的一次运行中一起获得多个 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

# 输出:
# [ 21., 7.]

Feed

TensorFlow 还提供了 feed 机制, 该机制 可以临时替代图中的任意操作中的 tensor 可以对图中任何操作提交补丁, 直接插入一个 tensor.feed 使用一个 tensor 值临时替换一个操作的输出结果. 你可以提供 feed 数据作为 run() 调用的参数. feed 只在调用它的方法内有效, 方法结束, feed 就会消失. 最常见的用例是将某些特殊的操作指定为 “feed” 操作, 标记的方法是使用 tf.placeholder() 为这些操作创建占位符.

#创建占位符
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)

with tf.Session() as sess:
	#feed的数据一字典的形式传入 
  print sess.run([output], feed_dict={input1:[7.], input2:[2.]})
# 输出:
# [ 14.]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值