Tensorflow框架初识

我们常说不要重复的造轮子,要尽可能的利用已有的成熟框架,毕竟站在巨人的肩膀上看世界,将会看的更远看的更多。目前,工业界和学术界已经提供了很多开源的神经网络实现如Caffe、Tensorflow、Keras、PyTorch等等,这些框架的功能非常强大,底层的实现细节框架已经帮我们做好,我们只需要定义自己的需求就行。

要说目前最为成熟、社区基础最为雄厚的深度学习框架,非Google出品的tensorflow莫属。

Tensorflow的命名源于其运行原理,Tensor本意为张量,通常表示多维矩阵,在深度学习项目中,数据大多高于二维,多维也是深度学习处理数据的核心特征。Flow本意为流动,即基于数据流图的计算。合在一起,Tensor Flow,张量从数据流图的一端流动到另一端的计算过程。

总体来讲,基于TensorFlow搭建的神经网络:用张量表示数据,用计算图搭建神经网络,用会话执行计算图,再优化线上的权重(参数),得到模型。神经网络的基本模型是神经元,神经元的基本模型其实就是数学中的乘、加运算。

接下来我们认识几个基本概念:

张量:即多维数组,张量的维度用“阶“表示。

0阶张量称作标量,是一个单独的数,如s=245

1阶张量称作向量,一维数组,如x=[2,4,5]

2阶张量称作矩阵,二维数组,如y=[[2,4,5],[6,8,9]]

3阶张量,如z=[  [  [ …… ]  ]  ]

数据类型:tensorflow中数据类型有tf.float32、tf.int32等

例如,我们来实现下tensorflow的加法:

import tensorflow as tf
a=tf.constant([1.0,2.0])
b=tf.constant([3.0,4.0])
result=a+b
print(result)

输出结果:

Tensor("add:0", shape=(2,), dtype=float32)

分别定义两个张量a,b。result实现其加法运算。输出result表示是一个名称为add:0的张量,shape是一个一维数组,长度为2,dtype=float32表示数据类型为浮点型。

计算图(Graph):(也称数据流图)即在逻辑上描述一遍神经网络的计算过程,只搭建网络,不计算。

# 构建计算流图
import tensorflow as tf
a=tf.constant([[4.0,1.0]],name="input_a")
b=tf.constant([[2.0],[1.0]],name="input_b")
c=tf.matmul(a,b,name="mul_c")
print(c)

输出结果:

Tensor("mul_c:0", shape=(1, 1), dtype=float32)

通过定义a,b两个2阶张量,c表示实现a,b的矩阵乘法。通过打印出的结果也是一个张量,只搭建承载计算过程的计算图,并没有运算。

会话(Session):执行计算图中的计算过程。

我们通常用“with”上下文管理器实现它,语法如下:

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

我们在上一个计算图中加入with结构:

import tensorflow as tf
a=tf.constant([[4.0,1.0]],name="input_a")
b=tf.constant([[2.0],[1.0]],name="input_b")
c=tf.matmul(a,b,name="mul_c")
with tf.Session() as sess:
    print(sess.run(c))

输出结果:

[[9.]]

了解完这四个基本概念后,我们可以运用tensorflow做一些简单的运算操作,当然,这些还远远不够,要想把神经网络玩转起来,接下来我们还要认识一些神经网络的参数,欢迎和我走进知识的海洋一起遨游~~~

猜你喜欢

转载自blog.csdn.net/qq_41127332/article/details/100071951