写个最入门级的操作,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.3
3.创建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)) #每隔二十步打印一次 执行步骤 权重 以及偏执 还有loss
6.执行结果
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