第四百一十六节,Tensorflow简介与安装html
TensorFlow是什么python
Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法、难以配置、依赖Google内部硬件等局限性,应用更加普遍,而且提升了灵活性和可移植性,速度和扩展性也有了大幅提升。字面上理解,TensorFlow就是以张量(Tensor)在计算图(Graph)上流动(Flow)的方式的实现和执行机器学习算法的框架。具备如下特色:git
Google第一代分布式机器学习框架DistBelief在内部大规模使用后没有选择开源,而第二代TensorFlow于2015年11月在GitHub上开源,并在持续快速开发迭代中。TensorFlow最先由Google Brain的工程师开发,设计初衷是加速机器学习的研究,并快速地将研究原型转化为产品。Google选择开源TensorFlow的缘由很简单:第一是但愿借助社区的力量,你们一块儿完善TensorFlow。第二是回馈社区,Google但愿让这个优秀的工具获得更多的应用,提升学术界和工业界使用机器学习的效率。
自从2015年11月开源以来,TensorFlow迅速在众多的机器学习框架中脱颖而出,在Github上得到了最多的Star
Google第一代分布式机器学习框架DistBelief在内部大规模使用后没有选择开源,而第二代TensorFlow于2015年11月在GitHub上开源,并在持续快速开发迭代中。TensorFlow最先由Google Brain的工程师开发,设计初衷是加速机器学习的研究,并快速地将研究原型转化为产品。Google选择开源TensorFlow的缘由很简单:第一是但愿借助社区的力量,你们一块儿完善TensorFlow。第二是回馈社区,Google但愿让这个优秀的工具获得更多的应用,提升学术界和工业界使用机器学习的效率。github
自从2015年11月开源以来,TensorFlow迅速在众多的机器学习框架中脱颖而出,在Github上得到了最多的Star.算法
安装 pip install tensorflow服务器
安装时会安装如下依赖markdown
absl-py-0.4.1
astor-0.7.1 gast-0.2.0
grpcio-1.14.2
markdown-2.6.11
numpy-1.14.5
protobuf-3.6.1
setuptools-39.1.0
six-1.11.0
tensorboard-1.10.0
termcolor-1.1.0
werkzeug-0.14.1网络
设置变量框架
import tensorflow as tf # python建立变量 a = 3 # tensorflow建立一个变量Variable # 建立横向量 w = tf.Variable([[0.5, 1.0]]) # 建立竖向量 x = tf.Variable([[4.0], [1.0]]) # 横向量乘以竖向量matmul y = tf.matmul(w, x) # 全局变量初始化global_variables_initializer init_op = tf.global_variables_initializer() with tf.Session() as sess: # 执行计算run sess.run(init_op) # 打印结果eval
[[ 2.]]
注意:若是PyCharm提示如下信息,加两行代码便可
2018-09-10 21:02:19.937491: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
#默认为0:输出全部log信息
#设置为1:进一步屏蔽INFO信息
#设置为2:进一步屏蔽WARNING信息dom
#设置为3:进一步屏蔽ERROR信息
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # python建立变量 a = 3 # tensorflow建立一个变量Variable # 建立横向量 w = tf.Variable([[0.5, 1.0]]) # 建立竖向量 x = tf.Variable([[4.0], [1.0]]) # 横向量乘以竖向量matmul y = tf.matmul(w, x) # 全局变量初始化global_variables_initializer init_op = tf.global_variables_initializer() with tf.Session() as sess: # 执行计算run sess.run(init_op) # 打印结果eval print(y.eval())
tensorflow不少操做跟numpy有些相似的
tf.zeros([3, 4], int32) ==> [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
tf.zeros_like(tensor) ==> [[0, 0, 0], [0, 0, 0]]
tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]]
tf.ones_like(tensor) ==> [[1, 1, 1], [1, 1, 1]]
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.] [-1. -1. -1.]]
tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0 11.0 12.0]
tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15]
随机
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 生成的值服从具备指定平均值和标准误差的正态分布 norm = tf.random_normal([2, 3], mean=-1, stddev=4) # 洗牌 c = tf.constant([[1, 2], [3, 4], [5, 6]]) shuff = tf.random_shuffle(c) # 每一次执行结果都会不一样 sess = tf.Session() print(sess.run(norm)) print(sess.run(shuff))
[[-5.58110332 0.84881377 7.51961231] [ 3.27404118 -7.22483826 7.70631599]] [[5 6] [1 2] [3 4]]
循环加1
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' state = tf.Variable(0) # 每初始化一次加1 # add加 new_value = tf.add(state, tf.constant(1)) # assign从新赋值 update = tf.assign(state, new_value) with tf.Session() as sess: # 初始化 sess.run(tf.global_variables_initializer()) print(sess.run(state)) # 循环3次 for _ in range(3): sess.run(update) print(sess.run(state))
0 1 2 3
加减乘除
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' a = tf.constant(5.0) b = tf.constant(10.0) ts1 = tf.constant(8.0) ts2 = tf.constant(9.0) x = tf.add(a, b, name="add") y = tf.div(a, b, name="divide") # (1)加法+ ts_add1 = tf.add(ts1, ts2, name=None) ts_add2 = ts1 + ts2 # 两者等价 # (2)减法- ts_sub1 = tf.subtract(ts1, ts2, name=None) ts_sub2 = ts1 - ts2 # 两者等价 # (3)乘法* ts_mul1 = tf.multiply(ts1, ts2, name=None) ts_mul2 = ts1 * ts2 # (4)除法/ ts_div1 = tf.divide(ts1, ts2, name=None) ts_div2 = tf.div(ts1, ts2, name=None) # div 支持 broadcasting(即shape可不一样) ts_div3 = ts1 / ts2 with tf.Session() as sess: print("a =", sess.run(a)) print("b =", sess.run(b)) print("a + b =", sess.run(x)) print("a/b =", sess.run(y)) print("ts_sub1", sess.run(ts_sub1))
a = 5.0
b = 10.0
a + b = 15.0
a/b = 0.5
ts_sub1 -1.0
挖坑
import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 理解为挖一个32的坑 input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) # 两个坑相乘 output = tf.multiply(input1, input2) with tf.Session() as sess: # 分别向两个坑填数据feed_dict print(sess.run([output], feed_dict={input1: [7.], input2: [2.]}))
[array([ 14.], dtype=float32)]