这篇文章将从零开始指导阅读者利用tensorflow搭建一个神经网络,若是有问题还请指出,或直接再评论区更正。若是对前面的内容不感兴趣可直接跳至神经网络处。
文章目录
一. 安装tensorflow
cmd命令
pip install tensorflow
很慢,这里建议换源
pip install tensorflow -i https://pypi.douban.com/simple/
之后大概率会出现**Cannot uninstall ‘wrapt’.**这样的报错。
这时候手动操作,输入命令
pip install wrapt --ignore-installed
应该就可以解决了。
之后检验
import numpy as np
import tensorflow.compat.v1 as tf
print(tf.__version__)
如果如下便正常。
二. tensorflow是什么
1. Hello TensorFlow!
这句话与我们初学编程时的"hello world!"相同,都是开始接触编程时所学的东西。在学习一门语言,一个框架的时候,首先,要对这门语言或者这门框架有一些基本的认识,我们来谈谈tensorflow到底是个什么。
TensorFlo是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief,现在我们就可以直接把它看为一个机器学习的算法库。
名为tensorflow有其自己的寓意,tensor是张量的意思,flow是流动的意思,仅就字面意思而言,tensorflow的意思是让张量流动起来,我们不妨拓展一下,将其看为,让数据流动起来。让数据一端流动到另一端。其实就是将复杂的数据传输到人工智能神经网络中进行处理的一个系统。
2. 张量
张量是矢量的推广,矢量是一阶张量,矩阵是二阶张量而三阶的张量好比立体的矩阵。
张量是一个表示矢量,标量,和其他张量之间的线性关系的多线性函数。可以看做是tensorflow中的某种基本数据类型。
3. tensorflow的基本概念
①. 算子
在tensorflow中集成了很多现成的,已经实现的机器学习经典算法,这些算法被称为算子(Operation),每个算子在定义时就被定下了规则,方法,数据类型以及相应的输出结果。
②. 节点
某个输入数据在算子中的具体运行和实现。
③. 边
边分为正常边,和特殊边
- 正常边:数据流动的通道。
- 特殊边: 又被称为“控制依赖”,其作用就是控制节点之间相互依赖,使数据的流动遵循一定的顺序。或者可以实现多线程运行数据的执行。
④. 会话
会话是tensorflow的主要交互方式,tensorflow的一般流程为:
- 建立会话
- 生成一张空图
- 添加各个节点和边
- 形成一个有连接的图
- 启动图对模型进行循环。
三. 从代码开始接触,由浅入深
1. 数据类型与逻辑运算
首先,我们运行一段代码
import numpy as np
import tensorflow.compat.v1 as tf
#导入tensorflow2 需要用到该语句,否则会报错。
tf.compat.v1.disable_eager_execution()
#创建 会话控制
sess=tf.Session()
a=tf.constant(1)
b=tf.constant(2)
#利用会话控制调用
print(sess.run(tf.add(a,b)))
结果为
- 开头的导库以及必须要的那段语句目前大家记住便可。之后会解释。
- 首先创建一个对话。
- 定义了两个量。
constant:这是常量的意思。我们知道编程语言中存在常量变量。常量一般是不可变的。比如重力加速度,地球的第一宇宙速度,都属于常量。
tf.add()相加,它是对我们输入的两个tensor进行相加的,而我们调用它,将它输出出来则需要用到会话控制。
tensorflow本身是包含各种数据类型的,不论是int32,float64,等等,在python中可以看到的,几乎在tensorflow都能看到。
import numpy as np
import tensorflow.compat.v1 as tf
#导入tensorflow2 需要用到该语句,否则会报错。
tf.compat.v1.disable_eager_execution()
sess=tf.Session()
hello=tf.constant('hello tensorflow!',dtype=tf.string)
print(sess.run(hello))
如上就是一个tf的字符串。接下来我们来看会话控制的一个重要功能。
import tensorflow.compat.v1 as tf
#导入tensorflow2 需要用到该语句,否则会报错。
tf.compat.v1.disable_eager_execution()
#创建会话控制中心
sess=tf.Session()
#创建常量
input_1=tf.constant(1)
print(input_1)
#创建变量
input_2=tf.Variable(2)
print(input_2)
input_2=input_1
print(sess.run(input_2))
结果如下:
input1显示是没有什么问题的,一个张量。但是input在没有执行会话之前,明明被赋值了,却没有数据,这说明只有在执行会话之后,input2变量才会发生真实值的变化。
如上为tensorflow几种常用的数据类型。
2. 矩阵
tensorflow由于其自身的结构,它也具有其自己矩阵的运算方法。
import numpy as np
import tensorflow.compat