Python学习记录 如何使用TensorFlow

如何使用TensorFlow

TensorFlow的使用分为下面几步

  1. 先定义训练的数据集
  2. 定义输入输出
  3. 定义计算图
  4. 定义损失函数
  5. 训练的过程

好了,你已经学会怎么使用TensorFlow,现在来试着写一个简单的线性回归吧!

目标

实现线性回归方程:y = a*x+b

首先先导入包,使用V1的版本

import numpy as np
import matplotlib.pyplot as plt
try:
    import tensorflow.compat.v1 as tf
    tf.disable_v2_behavior()
except:
   import tensorflow as tf

定义训练数据集

定义x函数为-1到1,间距100

trainX = np.linspace(-1,1,100)

加入噪声,均值为0,方差为0.05,形状和trainX一样

noise = np.random.normal(0,0.05,trainX.shape)

定义y函数为线性函数,同时添加一些噪声数据

trainY = 4*trainX+10+noise

训练集定义结束,开始定义输入输出

定义输入值,输入结构的输入行数不固定

xs=tf.placeholder(tf.float32)
ys=tf.placeholder(tf.float32)

定义输出值 a ,b值为浮点型名叫a b

a = tf.Variable(0.0,name="a")
b = tf.Variable(0.0,name="a")

输入输出定义完成后,开始定义计算图

这次计算图是个线性方程

y = a*xs+b

接着定义损失函数,让损失值在一定的区间内

loss = tf.square(y-ys)
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)#设置反向传播算法

最后可以创建会话,开始训练

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    plt.ion()  # 打开互交模式
    for i in range(10):
        for (X,Y) in zip(trainX,trainY):
            _,w_value,b_value = sess.run([train_step,w,b],feed_dict={xs:X,ys:Y})
        print("step:{},w:{},b:{}".format(i+1,w_value,b_value))

        plt.plot(trainX,trainY,'+')
        plt.plot(trainX,w.eval()*trainX+b.eval())
        # 暂停时间
        plt.pause(0.5)

运行结果

在这里插入图片描述

完整代码

import numpy as np
import matplotlib.pyplot as plt
# 首先先导入包,使用V1的版本
try:
    import tensorflow.compat.v1 as tf
    tf.disable_v2_behavior()
except:
   import tensorflow as tf
# 定义训练数据集
trainX = np.linspace(-1,1,100)
noise = np.random.normal(0,0.05,trainX.shape)
trainY = 4*trainX+10+noise
# 定义输入输出
xs=tf.placeholder(tf.float32)
ys=tf.placeholder(tf.float32)
a = tf.Variable(0.0,name="a")
b = tf.Variable(0.0,name="a")
# 定义计算图
y = a*xs+b
loss = tf.square(y-ys)
# 定义损失函数
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)#设置反向传播算法
# 创建会话,开始训练
with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    plt.ion()  # 打开互交模式
    for i in range(10):
        for (X,Y) in zip(trainX,trainY):
            _,a_value,b_value = sess.run([train_step,a,b],feed_dict={xs:X,ys:Y})
        print("step:{},a:{},b:{}".format(i+1,a_value,b_value))

        plt.plot(trainX,trainY,'+')
        plt.plot(trainX,a.eval()*trainX+b.eval())
        # 暂停时间
        plt.pause(0.5)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三千院喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值