3.1 张量,计算图,会话
本节课目标:搭建第一个神经网络,总结搭建八股
基于TensorFlow的NN:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,优化线上的权重(参数),得到模型.
张量(Tensor):多维数组(列表)
阶:张量的维数
维数 | 阶 | 名字 | 例子 |
---|---|---|---|
0-D | 0 | 标量 scalar | s=123 |
1-D | 1 | 向量 vector | v=[1,2,3] |
2-D | 2 | 矩阵 matrix | m=[[1,2,3],[4,5,6],[7,8,9] |
n-D | 3 | 向量 tensor | t=[[[[… |
张量可以表示0阶到n阶数组(列表)
tensorflow的数据类型:tf.float32 tf.int32
例子:
实现两个张量的加法:
import tensorflow as tf
a=tf.constant([1.0,2.0]) #定义一个张量a为常数1.0,2.0
b=tf.constant([3.0,4.0])
result = a+b
print(result)
显示结果:Tensor(“add:0”,shape=(2,),dtype=float32)
add:节点名
0:第0个输出
shape:维度
2:一维数组长度为2
dtype:数据类型
2,计算图(Graph):搭建神经网络的计算过程,只搭建,不运算
graph LR
A((X1)) -->|w1| D((y))
B((X2)) -->|w2| D((y))
y=XW=x1w1+x2w2
import tensorflow as tf
x=tf.constant([[1.0,2.0]]) #x是一个一行两列的张量
w=tf.constant([[3.0],[4.0]]) #w是一个两行一列的张量
y=tf.matmul(x,w)
print(y) #一行两列乘以两行一列等于一个数
结果为:Tensor(“matmul:0”,shape(1,1),dtype=float32)
会话(Session):执行计算图中的节点运算
with tf.Session() as sess:
print(sess.run(y))
import tensorflow as tf
x=tf.constant([[1.0,2.0]]) #x是一个一行两列的张量
w=tf.constant([[3.0],[4.0]]) #w是一个两行一列的张量
y=tf.matmul(x,w)
#print(y) #一行两列乘以两行一列等于一个数
with tf.Session() as sess:
print(sess.run(y)) #计算出y的值
1.0*3.0+2.0*4.0=11.0
结果为:[[11.]]