tensorflow(1)模拟函数

程序目的: 优化k、b值,产生优化的函数
环境: Tensorflow
代码执行过程:

  • 第一种方法:
import tensorflow as tf
import numpy as np


#利用numpy包 为了产生随机数
#使用numpy包产生100个随机数
x_data = np.random.rand(100)
#一个线性函数(相当于真实样本)
y_data = x_data*0.1 + 0.2

#构造一个线性模型
#产生随机变量并初始化值为0(可以变,但是最终获取的的k b值是一样的)
b = tf.Variable(0.)
k = tf.Variable(0.)
y = k*x_data + b

#二次代价函数(Loss函数)
loss = tf.reduce_mean(tf.square(y_data-y))
#定义一个梯度下降法来进行训练的优化器,学习率是0.2
optimizer = tf.train.GradientDescentOptimizer(0.2)
#最小化代价函数
train = optimizer.minimize(loss)

#初始化全局变量
init = tf.global_variables_initializer()

#定义会话
with tf.Session() as sess:
    #先run全局变量
    sess.run(init)
    #循环执行201次0——200下标
    for step in range(201):
        #每次迭代都要最小化Loss函数
        sess.run(train)
        #每迭代20次输出对应的迭代数,当前的k 0.1 b 0.2值,越接近真实数字 则可终止迭代
        if step%20==0:
            print(step,sess.run([k,b]))

迭代结果1:
这里写图片描述

  • 第二种方法:
import tensorflow as tf
import numpy as np
#creat data
x_data=np.random.rand(100).astype(np.float32)
y_data=x_data*0.1+0.3
###creat tensorflow structure start###
#tf.Variable来创建描述y 的参数,可以把y_data=x_data*0.1+0.3想象成y=Weights*x+biases
#然后就是神经网络学者把Weights变成0.1,把biases变成0.3
Weights=tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases=tf.Variable(tf.zeros([1]))
y=Weights*x_data+biases
#计算误差并使用optimizer更新
loss=tf.reduce_mean(tf.square(y-y_data))
optimizer=tf.train.GradientDescentOptimizer(0.5)
#0.5指的是机器学习的学习效率
train=optimizer.minimize(loss)
#在使用神经网络结构之前必须初始化所有之前定义的Variable
#init=tf.initialize_all_variables()
init=tf.global_variables_initializer()
#接着创建会话Session并执行init初始化,run每次的training数据
###creat tensorflow structure start###
#激活部分sess像是指针run激活
sess=tf.Session()
sess.run(init)#Very important
for step in range(201):
    sess.run(train)
    if step%20==0:
        print(step,sess.run(Weights),sess.run(biases))
#设置步长为20,tensor张量数据流。

迭代结果2:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhaoshuling1109/article/details/81461486