tensorflow官网的学习步骤已经算比较简单
但在学习中感觉入手还是有一些困难,尤其是需要学习周边的各种知识
下面把我从真正的零开始到 tensorflow官网例子之间的学习体会。
tensorflow官网定义:
TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
我的理解:
就是构造了一种框架,我们利用这个框架设计一种计算过程(或者叫计算方法),通过输入数据,让这个计算方法有效,并得出结果 类似python 的匿名函数(如lambda)
首先导入库
import tensorflow as tf import numpy as np
第一种:
下面是最简单的,真正的helloworld
定义常量,创建对话(Session),执行(run)对话,也就是处理方法的执行
# ------最简单的hello world print('------最简单的hello world') hello = tf.constant('hello tensorflow') sess = tf.Session() print(sess.run(hello)) a = tf.constant(3) b = tf.constant(6) print(sess.run(a+b))
显示结果:
------最简单的hello world
b'hello tensorflow'
9
第二种:
定义常量,定义变量(X),定义计算过程(Y,Z),执行对话(计算过程)
# ------000000000000000000 # ------最简单的计数器 print('------最简单的计数器') one = tf.constant(1) x = tf.Variable(0) y = tf.add(x, one) z = tf.assign(x,y) init = tf.global_variables_initializer() #有变量必须先有初始化 with tf.Session() as sess: sess.run(init) #有变量必须先有初始化 for _ in range(3): print('y=', sess.run(y),',z=', sess.run(z)) print('计算器 也可以 同时取回多了操作执行的值 Fetch ') #同时取回多了操作执行的值 Fetch with tf.Session() as sess: sess.run(init) for _ in range(3): result = sess.run([y, z]) print('result',result)
显示结果:
------最简单的计数器
y= 1 ,z= 1y= 2 ,z= 2
y= 3 ,z= 3
计算器 也可以 同时取回多了操作执行的值 Fetch
result [1, 1]
result [2, 2]
result [3, 3]
第三步:
和tensorflow官网一样的例子
构造一个 线性模型(计算方法y=wx+b)
通过计算最小方差(loss),设置分类器(optimizer):梯度下降每次0.5,设计成训练模型(train),也叫计算过程
在train计算过程中,权值w和偏量b不断自动调整变化,直到和预想无限接近
# ------最简单的人工智能应用 print('------最简单的人工智能应用') # ------通过训练 得到 y = wx + b 中 权值w 和偏量b的结果 # 使用 NumPy 生成假数据(phony data), 总共 100 个点. x_data = np.float32(np.random.rand(2, 300)) # 随机输入 #print('x_data=',x_data) y_data = np.dot([0.100, 0.200], x_data) + 0.300 #print('y_data=',y_data) # 构造一个线性模型 # b = tf.Variable(tf.zeros([1])) W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0)) y = tf.matmul(W, x_data) + b # 最小化方差 loss = tf.reduce_mean(tf.square(y - y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) train = optimizer.minimize(loss) print("loss=",loss) print("train=",train) # 初始化变量 init = tf.initialize_all_variables() # 启动图 (graph) sess = tf.Session() sess.run(init) # 拟合平面 for step in range(0, 301): sess.run(train) if step % 20 == 0: print (step, sess.run(W), sess.run(b)) # 得到最佳拟合结果 W: [[0.100 0.200]], b: [0.300]
显示结果:
------最简单的人工智能应用
loss= Tensor("Mean:0", shape=(), dtype=float32)
train= name: "GradientDescent"
0 [[0.8115538 0.17430243]] [-0.11786449]
20 [[0.28122652 0.2500236 ]] [0.18161136]
40 [[0.14824559 0.2242809 ]] [0.2625336]
60 [[0.11363102 0.20908526]] [0.28820705]
80 [[0.10401098 0.20309886]] [0.29629898]
100 [[0.10121081 0.20101358]] [0.29884037]
120 [[0.10037113 0.20032465]] [0.299637]
140 [[0.10011476 0.20010285]] [0.2998864]
160 [[0.10003567 0.20003238]] [0.29996446]
180 [[0.10001112 0.20001018]] [0.2999889]
200 [[0.10000347 0.20000318]] [0.29999653]
220 [[0.10000107 0.20000097]] [0.29999894]
240 [[0.10000033 0.20000029]] [0.29999968]
260 [[0.1000001 0.20000009]] [0.2999999]
280 [[0.1000001 0.20000009]] [0.2999999]
300 [[0.1000001 0.20000009]] [0.2999999]
是不是有一点感觉了?我是有了