Tensorflow入门篇(未完待续)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26822029/article/details/84503243

读完本篇,你应该能够:自己使用Tensorflow搭建一个神经网络。

首先对于Tensorflow有一个基本的认识,如果你是一个新手,还是乖乖地看完第一节的介绍部分。

一、基本概念

这一部分官方文档:https://tensorflow.google.cn/guide/low_level_intro

1 张量(tensor)

Tensorflow的核心数据单位是张量,一个张量其实就是一个多维数组(列表),其中的阶表示的是张量的维数,张量可以表示0阶到n阶数组。在Tensorflow中使用numpy阵列来表示张量值。

维数 名字 例子
0-D 0 标量(scalar) s = 1 2 3
1-D 1 向量(vector) v= [1, 2, 3]
2-D 2 矩阵(matrix) m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n-D n 张量(tensor) t = [[[ ...

2 图(Graph)

计算图是排列成一个图的一系列Tensorflow指令,图由两种类型的对象组成:

  • 操作(简称“op”):表示图的节点。
  • 张量:为图的边,代表将流经图的值。大多数的Tensorflow函数会返回tf.Tensors。

下面我们使用Tensorflow来构建一个图:

import tensorflow as tf

a = tf.constant(3.0, dtype = tf.float32)
b = tf.constant(4.0)
total = a + b
print(a)
print(b)
print(total)

猜猜上面的程序的运行结果是什么?你可能觉得应该分别是3.0, 4.0和7.0吧,我只能很遗憾的告诉你:不是!

运行结果是上图这样的,这是因为在Tensorflow中构建图并不会执行相应的运算。因此输出的结果tf.Tensor对象仅代表这个图的输出数据的格式。图中的每个指令都有唯一的名称

3 会话(Session)

前面讲了那么多,还是不能使用Tensorflow计算出结果。想要让我们设计的图能够正常的输出数据,就需要实例化一个tf.Session对象。一种简单方便的会话的写法如下:

With tf.Session() as sess:
    print(sess.run(graph_name))

比如结合上一小节中的例子,完整的程序如下所示:

怎么样,现在你应该对这个结果比较满意吧?输出的结果正是7.0唉,和之前的预测一致!

小结1:因此,现在你应该摸清楚了Tensorflow使用的方法了吧?首先,使用Tensorflow语句构建Graph,这个图是一个模型,并没有数据实际流动;Graph设计好之后就需要使用tf.Session()来让我们的数据(以张量的格式)在Graph中流动计算,最终得到结果。

那么接下来,我们考虑一个严肃的问题:在Tensorflow中我应该怎样表示我的数据呢?如何表示常量?变量?输入值呢?因此我们还需要再仔细的说说张量。

4 再话张量

本小节官方文档:https://tensorflow.google.cn/guide/tensors

tf.Tensor具有以下的属性:

  • 数据类型:float32、int32、string等
  • 形状

张量中的每个元素都具有相同的数据类型。以下是Tensorflow中常用的张量类型:

张量类型 值是否可变 一句话介绍 详细点的说明
tf.Variable 可变 变量 主要用来定义一些可变量,比如神经网络里面的权值或者偏移量等等。在训练的过程中,其值会改变,需要指定初始值。
tf.constant 不可变 常量 就是用来创建常量,在Session.run函数中不可修改!
tf.placeholder 不可变 占位符,相当于C语言里的scanf等待feed数据 用于得到传递进来的真实的训练样本。不必指定初始值,可以在Session.run的函数的feed_dict参数指定。

猜你喜欢

转载自blog.csdn.net/qq_26822029/article/details/84503243