写个最入门级的操作,tensorflow关于模拟一次函数,测试使用tensorflow和numpy的库
1.首先引入两个库-
import tensorflow as tf import numpy as np
2. 然后创建数据 x_data 作为随机生成的100个数据 作为np.float32类型 然后定义正确的y_data值 计算出来
#create data x_data=np.random.rand(100).astype(np.float32) y_data=x_data*0.1+0.33.创建tensorflow的结构
###cerate tensorflow structure start ### Weight =tf.Variable(tf.random_uniform([1],-1.0,1.0))#随机数列生成参数 biases=tf.Variable(tf.zeros([1])) y=Weight*x_data +biases loss=tf.reduce_mean(tf.square(y-y_data)) optimizer=tf.train.GradientDescentOptimizer(0.5) #学习率 建立一个优化器 用这个优化器去减少loss 每一步去调整误差 调整参数 提升准确度 train=optimizer.minimize(loss) init=tf.initialize_all_variables() ###cerate tensorflow structure end ###
4.激活所有的变量 整个神经网络节点的结构激活 session函数的使用,tensorflow中的节点包括前边的创建 其实只是对于结构的创建而并不是 具体运行起来的 只有session函数能够指向它去激活使用
sess=tf.Session() sess.run(init)
5.开始训练 假设201步
for step in range(201): sess.run(train) #开始训练 if step%20==0: print(step,sess.run(Weight),sess.run(biases)) #每隔二十步打印一次 执行步骤 权重 以及偏执 还有loss6.执行结果
Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ========== RESTART: C:\Users\Administrator\Desktop\lineFunction.py ========== Traceback (most recent call last): File "C:\Users\Administrator\Desktop\lineFunction.py", line 14, in <module> loss=tf.reduce_mean(tfsquare(y-y_data)) NameError: name 'tfsquare' is not defined >>> ========== RESTART: C:\Users\Administrator\Desktop\lineFunction.py ========== Traceback (most recent call last): File "C:\Users\Administrator\Desktop\lineFunction.py", line 16, in <module> train=optimizer.minimizer(loss) AttributeError: 'GradientDescentOptimizer' object has no attribute 'minimizer' >>> ========== RESTART: C:\Users\Administrator\Desktop\lineFunction.py ========== WARNING:tensorflow:From D:\python\lib\site-packages\tensorflow\python\util\tf_should_use.py:118: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead. 0 [0.81475365] [-0.10972821] 20 [0.3025545] [0.19387147] 40 [0.15626195] [0.27052152] 60 [0.11562744] [0.291812] 80 [0.1043407] [0.2977257] 100 [0.10120568] [0.2993683] 120 [0.10033489] [0.29982454] 140 [0.10009304] [0.29995126] 160 [0.10002587] [0.29998645] 180 [0.10000721] [0.29999623] 200 [0.10000202] [0.29999897] >>>
前边的两个错误是因为我两个函数写错了字母,所以一定要细心一点 后边的结果可一看到权重和偏执 在一开始随机初始化后就一直趋向于1 和3 这正是我们想要的结果。
下面贴出全部的代码供参考:
import tensorflow as tf import numpy as np #create data x_data=np.random.rand(100).astype(np.float32) y_data=x_data*0.1+0.3 ###cerate tensorflow structure start ### Weight =tf.Variable(tf.random_uniform([1],-1.0,1.0))#随机数列生成参数 biases=tf.Variable(tf.zeros([1])) y=Weight*x_data +biases loss=tf.reduce_mean(tf.square(y-y_data)) optimizer=tf.train.GradientDescentOptimizer(0.5) #学习率 建立一个优化器 用这个优化器去减少loss 每一步去调整误差 调整参数 提升准确度 train=optimizer.minimize(loss) init=tf.initialize_all_variables() ###cerate tensorflow structure end ### sess=tf.Session() sess.run(init) #激活所有的变量 整个神经网络节点的结构激活 #开始训练 假设201步 for step in range(201): sess.run(train) #开始训练 if step%20==0: print(step,sess.run(Weight),sess.run(biases)) #每隔二十步打印一次 执行步骤 权重 以及偏执 还有loss