一、张量 点击返回总目录 二、计算图 三、会话 四、参数 五、神经网络实现过程 使用TensorFlow搭建神经网络时,我们经常: 使用张量表示数据;使用计算图搭建神经网络;使用会话执行计算图,再优化神经网络中的参数,获得更准确的模型。 一、张量 首先介绍什么是张量。其实,张量就是多维数组,就是列表。用阶表示张量的维度。
0阶张量,就是标量,比如123。一阶张量,叫做向量,表示的是一个一维数组,比如列表[1,2,3]。二阶张量叫做矩阵,表示的是一个二维数组。 判断张量是几阶的,就看黄色框框这个地方有几个"["。有n个"["就是n阶。所以,张量可以表示0阶到n阶数组。 例:实现两个张量的加法
运行结果: Tensor("add:0", shape=(2,), dtype=float32) 意思是result是一个名字叫“add:0”的张量。shape=(2,):括号中有一个数,表示维度是1;2表示第1个维度里有两个元素。 dtype=float32表示数据是浮点型的。TensorFlow的数据类型有tf.float32(32位的浮点)、tf.int32(32位的整型)等等。
二、计算图 其实上面的例子所描述的,就是一个计算过程,就是一张计算图。从print输出的内容,我们可以看到,只显示出这个结果是个张量,并没有实际运算张量具体的值。所以计算图只描述了计算过程,不计算运算结果。 所谓计算图(Graph),就是搭建神经网络的计算过程,他是承载一个或多个下面这种节点(整个方框里面的是一个节点)的一张图,只搭建网络,不运算。
神经元的基本模型就是上面图中这个样子,其实就是数学里的乘加运算。我们用张量运算描述这个神经元为:
运行结果: Tensor("MatMul:0", shape=(1, 1), dtype=float32) #结果为二维,一行一列的矩阵。 我们从print的结果可以看到,y是个张量,只承载了搭建计算过程的计算图,并没有运算。 三、会话 如果我们想得到运算结果,就要用到会话了。 所谓会话(session),是执行运算图中节点运算的。我们用with结构实现。 例:
运行结果: Tensor("MatMul_1:0", shape=(1, 1), dtype=float32) 四、神经网络的参数 神经网络的参数是神经元线上的权重w,用变量表示。一般会先随机生成。常常这样写:
tf.Variable()表示生成变量,生成的方式写在括号里。比如tf.random_normal表示生成正态分布的随机数,形状是2行3列,标准差是2,均值为0,随机数种子为1。如果把随机数种子去掉,则每次生成的随机数不一样。标准差、均值、随机种子三个如果没有特殊要求,可以不写。 tf.random_normal()函数可以用tf.truncated_normal()函数替换,表示去掉过大偏离点的正态分布。也就是,如果随机生成的数据偏离平均值超过两个标准差,这个数据将重新生成。 同样,tf.random_normal()函数可以用tf.random_uniform()函数替换,tf.random_uniform()为平均分布函数。
除了生成随机数,还可以生成常量。比如,tf.zeros生成全0数组等。
五、神经网络实现过程 当我们知道了张量、计算图、会话和参数后,我们可以学习神经网络实现过程了。
其实,神经网络的实现只要4步: 第1步,准备数据集, 第2步,前向传播。数据从输入到输出,走过搭建好的神经网络。可以计算得到输出。 第3步,反向传播。把大量数据喂给神经网络,得到大量输出,把每次输出与标准答案的差反向传回神经网络,调节神经网络的参数, 直到模型达到要求。 第4步,当模型达到要求后,可以使用这个优化好参数后的模型。将新数据送入前向神经网络,便可以实现预测和分类了。 |
TensorFlow的框架
版权声明:未经同意,严禁转载 https://blog.csdn.net/pengchengliu/article/details/88114214
猜你喜欢
转载自blog.csdn.net/pengchengliu/article/details/88114214
今日推荐
周排行