其他分享
首页 > 其他分享> > [学习日志]自然语言处理-斯坦福 Tensorflow入门

[学习日志]自然语言处理-斯坦福 Tensorflow入门

作者:互联网

tensorflow的思想 图

把数值计算转化为计算图
图中的每个节点可以看作一个操作,有任意输入,一个输出
图中的边被称为tensor,也就是多维向量
tensor在flow的时候,也就是在计算

在这里插入图片描述

变量节点(图中b,W)

变量是节点,操作也是节点
变量节点是有状态的,可以将值存入变量节点,并保存到硬盘
变量节点会自动进行梯度更新,而这些梯度也就是要学的东西

占位符节点(图中X)

在运行时接受值的节点,典型的输入节点,不需要初始值,只需要分配大小

数学操作节点(图中紫色方形节点)

这些节点都是封装好的,并且值得注意的一点是,这些节点来自于tensorflow而不是numpy

代码

在这里插入图片描述

如何运行一个图

所谓运行,就是将图部署到一个会话(Session)中
会话是和CPU或GPU绑定的

所以所谓运行,也就是把图交给GPU就行了
(补充了一点,谷歌在针对tensor计算开发TPU)
在这里插入图片描述

如何定义损失函数

在这里插入图片描述

如何计算梯度,并根据梯度更新变量

在这里插入图片描述
只需要输入lr和loss,计算梯度和更新的工作就会自动完成

如何进行训练

在已经定义了损失,且能够计算梯度并更新变量之后
只需要制定一个学习计划就可以进行训练了
在这里插入图片描述
这里的data是一个抽象的数据源,在实际应用中大概率是一个Numpy数据
Tensorflow的优点在于能够自动兼容Numpy数据,将其转换为tensor并移交给占位符

变量共享

不希望每次复制图的时候,复制出来的图的变量都是初始状态,希望变量能够共享
比如在GPU集群上计算的时候,多台机器同时更新一组变量

Tensorflow有一个变量作用域机制
在这里插入图片描述
如上图中,V和V1其实就是同一个变量
通过get_variable(“名字”),实现了共享

下面是一个论文分享,想要放弃。。。。下课

标签:变量,梯度,斯坦福,图中,计算,Tensorflow,日志,节点,tensor
来源: https://blog.csdn.net/gjh1716718326/article/details/114029643