《人工智能实践:Tensorflow笔记》听课笔记11_3.1张量、计算图、会话

附:课程链接

第三讲.Tensorflow框架
3.1张量、计算图、会话

由于个人使用Win7系统,并未完全按照课程所讲,以下记录的也基本是我的结合课程做的Windows系统+PyCharm操作。且本人有python基础,故一些操作可能简略。并未完全按照网课。

记住编写代码时,除注释内容外,字符均使用英文格式。

本节课程目标:搭建第一个神经网络,总结搭建八股。
1.基于Tensorflow的NN(Neural Networks神经网络):用张量表示数据,用计算图搭建神经网络,用会话执行计算图,再优化线上的权重(参数),得到更准确的模型。
2.张量(tensor):多维数组(多维列表)。用“”来表示张量的维度。
0阶张量→标量,表示一个单独的数。例如:S = 123
1阶张量→向量,表示一个一维数组。例如V = [1,2,3] (列表[1,2,3])
2阶张量→矩阵,表示一个二维数组,它可由i行j列个元素,每个元素用行号和列号共同索引到。例如m = [[1,2,3],[4,5,6],[7,8,9]],在这个矩阵m中,元素1的索引就是m的第一行第一列。
判断张量是几阶的,就通过判断张量右边的方括号数,0个是0阶,1个是1阶……n个就是n阶。张量可以表示0到n阶数组。
在这里插入图片描述
3.tensorflow的数据类型:tf.float32(32位浮点)、tf.int32(32位整形)等等。
代码举例(实现两个张量的加法):

import tensorflow as tf #导入tensorflow模块,简写为tf
a = tf.constant([1.0,2.0])  #定义一个张量a等于常数[1.0,2.0]
b = tf.constant([3.0,4.0])  #定义一个张量b等于常数[3.0,4.0]
result = a + b  #实现a+b的加法
print(result)

验证结果:

在这里插入图片描述
result是一个名为"add:0"的张量,因为shape的()中仅有一个元素,故维度是1,这个元素是2,表示第一个维度里有两个元素,是浮点型的。

【补充:在运行上述代码时出现了警告FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / ‘(1,)type’.
_np_quint16 = np.dtype([(“quint16”, np.uint16, 1)])
。大家感兴趣可以自行百度,个人觉得在现在没有什么影响,毕竟只是一个future的warning,但是以后还是要注意书写方式。现在我没有找到解决消除这个警告的办法。】

其实上述的代码就是一个计算过程,就是一张计算图。从输出结果我们可以看出,结果仅显示是个张量,并未实际运算显示张量的值。故计算图只显示计算过程,不计算运算结果。现在让我们了解一下计算图:

4.计算图(Graph):搭建神经网络的过程,是承载一个或多个计算节点的一张图,只搭建网络,不运算。
举例:在第一讲中提过,神经网络的基本单元是神经元,神经元的基本模型如图:

在这里插入图片描述
其实就是数学中的“乘加运算”。x1、x2是输入,w1、w2分别是x1→y和x2→y的权重。y = x1w1 + x2w2。我们用张量运算描述这个神经元:

import tensorflow as tf #导入tensorflow模块,简写为tf

x = tf.constant([[1.0,2.0]])  #x是一个一行两列的张量,为常量
w = tf.constant([[3.0],[4.0]])  #w是一个两行一列的张量,为常量

y = tf.matmul(x,w)  #实现xw矩阵乘法。x是一行两列,w是两行一列,输出结果为一行一列的二维张量
print(y)

跟上一段代码一样,我们得到的仅是计算过程,而非计算结果:
在这里插入图片描述
如果想得到运算结果就要用到会话了:

5.会话(Session):执行计算图中的节点运算。我们用with结构实现,语法如图:
在这里插入图片描述
注意Session首字母大写。sess.run(y)就可以结算出矩阵乘加结果了。
代码实现:

import tensorflow as tf #导入tensorflow模块,简写为tf

x = tf.constant([[1.0,2.0]])  #x是一个一行两列的张量,为常量
w = tf.constant([[3.0],[4.0]])  #w是一个两行一列的张量,为常量

y = tf.matmul(x,w)  #x是一行两列,w是两行一列,输出结果为一行一列的二维张量
print(y)

with tf.Session() as sess:
    print(sess.run(y))

运行结果(无视报错):
在这里插入图片描述
得到结果即为11.0(1.03.0 + 2.04.0 = 11.0)

【在课程中,老师使用的是Vim,最后介绍了降低tensorflow提升等级的操作,在这里附上助教笔记,如感兴趣可自行观看网课(网课链接在文首已附):
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值