tensorflow学习之模拟一次函数

写个最入门级的操作,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

猜你喜欢

转载自blog.csdn.net/d1242218781/article/details/80582991