【NLP训练营】 第四周

本周任务

学课程

学习cs224n第七讲第八讲

TensorFlow入门

RNN和语言模型

读论文

写作业

  • 2.1 Tensorflow Softmax 基于TensorFlow的softmax分类
  • 2.2 Neural Transition-Based Dependency Parsing 基于神经网络的依赖分析

 

第七课笔记

TensorFlow是一个图,图中的节点是某种运算,图的边是tensor(张量,n维数组),在节点之间流动。

建立图

variable:是节点,输出当前值。它通常是模型的参数,是你想进行微调,最小化损失的东西。

placeholder:是节点,是在执行的时候才会接受值得节点。网络中依赖外部数据的输入,在你建立图的时候就不想预先写进的值,但是在运行中需要用到这些值,那么就给他在建图的时候来个占位符(placeholder)。对于占位符不初始化任何的值,只定义数据类型和分配张量的shape。

Mathematical operations:数学操作节点。比如矩阵乘法、加法、ReLU激活函数等等。写成代码就是 tf.nn.relu()或者tf.matmul()。

 

hankcs.com 2017-06-21 上午10.34.20.png

 

上面的幻灯片用了几行代码构建好了运算图。现在还没有输入,也没有运行,自然无法获得h的值。

上述代码没有显式的声明节点和边,这是tf在背后自动构造的。

 

运行图

建立一个会话,tf里叫做session。可以通过session将图部署到某个执行环境(CPU、GPU) ,session就是到某个软硬件执行环境的绑定。

fetches:图形节点列表,返回节点输出。

feeds:是一个从图节点到我们想要的模型中运行的实际值的字典映射(就是从placeholder到其输入值的映射).

 

hankcs.com 2017-06-21 上午10.52.59.png

 

加了三行代码。首先tf.Session()建立一个session,你可以在里面写参数说明你用了什么硬件。然后session.run()初始化所有变量(后面印度小哥讲的时候说tf已经更新了,现在的初始化用 tf.global_variables_initializer())。第三行是计算了h,并做了字典给x输入了值。所以h 是和fetches对应的,x 是和feeds对应的。

 

训练模型

import TensorFlow as tf

prediction = tf.nn.softmax(...)  #Output of neural network
label = tf.placeholder(tf.float32, [100, 10])
						
cross_entropy = -tf.reduce_sum(label * tf.log(prediction), axis=1)

做好定义,建好了图。然后要初始化optimizer 优化器对象。tf中有一个通用的抽象类叫做optimizer,这个类中的每一个子类都是针对特定学习算法的优化器。课程中选了梯度下降优化器进行演示。

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

当运行到这个train_step节点的时候,这个minimize会进行两个操作。先对其参数,也就是cross_entropy计算梯度,它和图中的所有变量相关,然后第二步更新这些变量。tf在其所有的节点都附带了梯度操作,所以反向传播在tf是自动的很easy的完成了。

 

hankcs.com 2017-06-21 上午11.23.08.png

 

变量共享

当你建立大模型时,会有大量的变量。比如想生成一张图的多个实例,或者在多个GPU上训练同一个模型,就会有同一个变量在不同位置上出现。

这张幻灯片讲了tf的命名空间。我们可以使用tf.variable_scope()定义一个命名空间,然后用tf.get_variable()创建变量,如果发现这个命名空间下已经有了同名的,那么就直接指向了这个已经存在的变量;要是没有叫这名的,就创建一个新的出来。

 

第八课笔记

第八课讲了RNN的基本概念。现在主要用的两种模型LSTM和GRU都是基于RNN的模型,在下一课会讲到LSTM和GRU,所以这次偷个懒,笔记可以看这里:http://www.hankcs.com/nlp/cs224n-rnn-and-language-models.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值