tensorflow新手入门学习笔记
tensorflow新手入门学习笔记
- 入门基本内容
- option
- 变量
- 框架的启动
- tensorflow运行时两个警告消除方法
- FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
- Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
入门基本内容
tensorflow是一个很有意思的框架。tensor是这个框架里的一个主要的数据类型,本质类似一个多维数组。框架的主体是图,一般只使用默认图即可。高阶用法可以管理多个图。在这个框架中所有运算(option)都是一个节点,数据(tensor)就在不同的节点间流动(flow),通过运算发生改变,这就是tensorflow名称的由来。在创建阶段,将需要的节点加入图中,之后通过图调用不同节点进行运算。不同节点之间是并行运行的。
option
option即节点,就像是一个函数,数据传进来,然后返回运算后的结果。
添加option的语法为 y = tf.option(x1,x1,…,xn)。
其中输入输出均为tensor,一般输入都是其他option的输出。如果需要使用临时的tensor作为输入,则需要使用以下代码。
x1 = tf.placeholder(tf.types.float32)
这行代码就创建了一个float32类型的临时tensor,实际使用时需要给input1临时赋值,使用feed语句。
feed_dict={x1:[7.]}
完整代码示例如下:
x1 = tf.placeholder(tf.types.float32) #创建一个临时tensor x2 = tf.constant(3.0) #创建一个返回常量的option y = tf.add(x1 , x2) #创建一个运行加法的option
feed语句在调用时使用,后面讲。
变量
在tensorflow中使用tf.Variable创建变量:
#创建一个值为0,名字为“one_variable”的变量 x = tf.Variable(0, name = "one_variable")
变量有很多操作,因为刚入门,只写最简单的赋值操作:
x = tf.Variable(0., name = "one_variable") #创建变量 value = tf.constant(2.0) #创建常量 update = tf.assign(x, value) #用value给x赋值,注意要类型相同
框架的启动
tensorflow框架的主体是图,程序的运算节点都是添加在图里的,在运行时通过图取得节点的运算结果。
sess = tf.Session() #创建图对象,没有参数的默认情况下启动默认图
要通过图取得节点的运算结果,就要了解tensorflow中的fetch概念。
fetch英文原义是去某个地方取得某个东西,这里的意思也类似。fetch指从图中获取某一个或者某几个节点的运算结果。
代码如下:
x1 = tf.constant(2.0) #一个返回常量值的节点 x2 = tf.constant(3.0) #另一个返回常量值的节点 sess = tf.Session() #创建图对象 y = sess.run(x1) #运行图,取得x1值并返回,即fetch print(y) #输出y #输出结果:2.0 y = sess.run([x1, x2]) #运行图,取得x1, x2值并返回,即fetch print(y) #输出y #输出结果:[2.0, 3.0]
需要注意的是,在图中节点没有先后顺序,是并行的。fetch时,图会自动运行所有涉及到的节点,一次取回所有结果。
下面就附上入门篇比较完整的代码,庆祝自己又熟练掌握了一种“Hello, World!”:
import tensorflow as tf #基本变量与常量节点定义 hello = tf.constant('Hello, World!') one = tf.constant(1.0) three = tf.constant(3.0) temp = tf.placeholder(tf.float32) variable = tf.Variable(0.0, name = 'counter') #主要计算节点定义 add_one_three = tf.add(one, three) add_variable_one = tf.add(variable, one) add_one_temp = tf.add(one, temp) update = tf.assign(variable, add_variable_one) #初始化节点,有变量时需要 init_op = tf.global_variables_initializer() #创建图对象 sess = tf.Session() #初始化 sess.run(init_op) #计算与输出 y = sess.run(hello) print(y) #输出:b'Hello, World' y = sess.run([one, three]) print(y) #输出:[1.0, 3.0] y = sess.run(add_one_three) print(y) #输出:4.0 y = sess.run(add_one_temp, feed_dict = {temp: 9.0}) print(y) #输出:10.0 for i in range(3): sess.run(update) y = sess.run(variable) print(y) #输出: #1.0 #2.0 #3.0 #关闭图 sess.close()
tensorflow运行时两个警告消除方法
在跑demo的过程中一直有两个警告,虽然没有什么影响,但是还是很不舒服,一顿操作后终于解决了这两个问题。
FutureWarning: Conversion of the second argument of issubdtype from float
to np.floating
is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type
.
这个是库里h5py包版本过旧,更新即可,使用命令:
pip install h5py==2.8.0rc1
更新后警告就消失了。
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
这个是因为tensorflow支持对cpu的优化,但是默认安装的tensorflow都是X86_64的SIMD版本,跟AVX2的SIMD版本cpu指令集不同。
解决办法就是先卸载现有的tensorflow,使用指令:
pip uninstall tensorflow
然后在github上找到自己版本的tensorflow下载。
链接如下:
windows
其他操作系统
我下载的是1.12.0\py36\CPU\avx2,因为我的python版本是3.6,之后使用指令:
pip install tensorflow-1.12.0-cp36-cp36m-win_amd64.whl
重新安装下载的tensorflow即可。
注:下载不同版本的tensorflow使用的安装指令也不同,先在cmd中进入下载文件所在的目录再使用指令安装,不然会找不到文件。
- tensorflow学习笔记零:新手入门笔记
- TensorFlow 教程 - 新手入门笔记
- 【懒懒的Tensorflow学习笔记一之快速入门】
- Django2.0 学习笔记(一)-->新手入门
- iscrll.js ,新手入门,学习笔记。
- nginx 学习笔记(2) nginx新手入门
- [TensorFlow]入门学习笔记(5)-循环神经网络RNN
- [TensorFlow]入门学习笔记(2)-卷积神经网络mnist手写识别
- [TensorFlow]入门学习笔记(6)-Tensorboard简易教程和模型保存
- RNN入门详解及TensorFlow源码实现--深度学习笔记
- TensorFlow官方教程学习笔记之1-TensorFlow入门教程(Getting Started With TensorFlow)
- TensorFlow学习笔记1:入门
- tensorflow学习笔记二:入门基础
- Tensorflow入门学习笔记
- CNN入门详解及TensorFlow源码实现--深度学习笔记
- TensorFlow学习笔记之三——适合入门的一些资源
- tensorflow学习笔记一:入门基础
- tensorflow学习笔记二:入门基础
- TensorFlow官方教程学习笔记(三)——MNIST入门(续)
- [学习笔记] TensorFlow 入门之基本使用