【TF-3-1】Tensorflow--简单线性拟合

一、代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

import numpy as np

import tensorflow as tf

# 1. 构造一个数据

np.random.seed(28)

N = 100

x = np.linspace(0, 6, N) + np.random.normal(loc=0.0, scale=2, size=N)

y = 14 * x - 7 + np.random.normal(loc=0.0, scale=5.0, size=N)

# 将x和y设置成为矩阵

x.shape = -1, 1

y.shape = -1, 1

# 2. 模型构建

# 定义一个变量w和变量b,初始化

# random_uniform:(random:随机产生数据,uniform:均匀分布) =>产生一个服从均匀分布的随机数列

# shape: 产生多少数据/产生的数据格式是什么; minval:均匀分布中的可能出现的最小值,maxval: 均匀分布中可能出现的最大值

w = tf.Variable(initial_value=tf.random_uniform(shape=[1], minval=-1.0, maxval=1.0), name='w')

b = tf.Variable(initial_value=tf.zeros([1]), name='b')

# 构建一个预测值

y_hat = w * x + b

# 构建一个损失函数:以MSE作为损失函数(预测值和实际值之间的平方和)

loss = tf.reduce_mean(tf.square(y_hat - y), name='loss')

# 以随机梯度下降的方式优化损失函数

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.05)

# 在优化的过程中,是让那个函数最小化

train = optimizer.minimize(loss, name='train')

# 全局变量更新

init_op = tf.global_variables_initializer()

# 运行

def print_info(r_w, r_b, r_loss):

print("w={},b={},loss={}".format(r_w, r_b, r_loss))

with tf.Session() as sess:

# 初始化

sess.run(init_op)

# 输出初始化的w、b、loss

r_w, r_b, r_loss = sess.run([w, b, loss])

print_info(r_w, r_b, r_loss)

# 进行训练(n次)

for step in range(100):

# 模型训练

sess.run(train)

# 输出训练后的w、b、loss

r_w, r_b, r_loss = sess.run([w, b, loss])

print_info(r_w, r_b, r_loss)

二、结果

截取后面一部分:

【TF-3-1】Tensorflow--简单线性拟合

上一篇:Eclipse: eclipse文本文件编码格式更改(GBK——UTF-8)


下一篇:module 'tensorflow' has no attribute 'ConfigProto'/'Session'解决方法