用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

用TensorFlow实现线性回归实验

*
实验目的:
实验内容

+ 一.TensorFlow环境安装
+ 二.利用TensorFlow进行线性回归实验
实验要求:

+ 1 生成拟合的数据集
+ 2 构建线性回归的Graph
+ 3 在Session中运行构建好的Graph
+ 4 绘制拟合曲线
+ 5 tensorboard展示神经网络的graph
实验记录以及实验过程中遇到的问题以及解决方案:

+ 1.程序运行报错
+ 2.程序运行报错
+ 3.格式报错
+ 4.页面报错
+ keras安装(参考)

实验目的:

通过本次实验让学生了解TensorFlow构建整个神经网络训练模型的基本思想,掌握TensorFlow实现线性回归的流程和方法,并学会使用tensorboard graph来以图形化的方式查看和检查自己所设计的神经网络模型。
实验仪器设备及材料:
安装有Python运行环境的电脑。

实验内容

一.TensorFlow环境安装

查看conda:

conda --version

查看python:

python --version

1.在anaconda prompt窗口进行安装(anaconda3)最好新建一个虚拟环境,之后在环境中操作安装(默认环境是base)

conda create -n tf2 python=3.6.5

这是新建了一个名为tf2,并且python版本是3.6.5的一个环境(python版本号要跟你自己的版本号匹配)。
切换到某个环境:conda activate 环境名。
2.进入刚刚创建的tf2环境:

conda activate tf2

3.安装TensorFlow2.4.0

pip install tensorflow-cpu==2.4.0

或者镜像安装 pip install tensorflow-cpu==2.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
这里可能有点久,要保证不能断网。它会另外安装其他的包,这些包在机器学习中也会经常用到。如果出现红字,再安装一次。直到出现successfull installed …,表明已经成功安装好了tensorflow包。下图是2.5.0版本安装成功示意图:

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

4.之后若使用pycharm工具软件,不需要再安装TensorFlow,配置环境即可

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

二.利用TensorFlow进行线性回归实验

给定一批由 y = 3 _x + 2 生成的数据集(x, y),建立线性回归模型 h(x) = w_x + b,预测出 w = 3 和 b = 2。

实验要求:

1 生成拟合的数据集

数据集只含有一个特征向量,注意误差项需要满足高斯分布。使用了numpy和matplotlib库。numpy是Python的一个开源数值科学计算库,可用来存储和处理大型矩阵。matplotlib 是 Python 的绘图库,它可与 numpy 一起使用,提供了一种有效的 MatLab 开源替代方案
其代码如下:


import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

num_points = 100
vectors_set = []
for i in range(num_points):
 x1 = np.random.normal(0.,0.55)
 y1 = x1 * 0.1 + 0.3 + np.random.normal(0.0,0.03)
 vectors_set.append([x1,y1])

x_data = [v[0] for v in vectors_set]

y_data = [v[1] for v in vectors_set]

plt.scatter(x_data,y_data,c='b')
plt.show()

由此产生的数据分布如下:

[En]

The resulting data distribution is as follows:

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

2 构建线性回归的Graph


w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')
b = tf.Variable(tf.zeros([1]),name='myb')

y = w * x_data + b

loss = tf.reduce_mean(tf.square(y-y_data,name='mysquare'), name='myloss')

optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss,name='mytrain')

3 在Session中运行构建好的Graph


sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))

for step in range(20):
 sess.run(train)
 print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))

writer = tf.summary.FileWriter("./mytmp",sess.graph)

打印下w和b,损失值的变化情况,可以看到损失值从0.24降到0.0008.

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

4 绘制拟合曲线

plt.scatter(x_data,y_data,c='b')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()

如图:

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

5 tensorboard展示神经网络的graph

在上面的程序设计中有代码: writer = tf.summary.FileWriter("./mytmp",sess.graph)
运行改代码后就可以将整个神经网络节点信息写入到 ./mytmp 目录下(该目录与前面建立的程序在一个目录)。在cmd中通过”cd 目录”切换到该目录下,输入”dir”命令显示该目录下刚才运行的日志文件,最后输入 tensorboard --logdir=D:\PyCharm2018.3.7\workpase\eg001\mytmp,回车运行后出现显示信息,信息最后一行中出现” TensorBoard 2.0.2 at http://localhost:6006/ (Press CTRL+C to quit)“,打开chrome浏览器,在浏览器地址栏中输入 http://localhost:6006,就会展示刚才程序设计的神经网络的图形显示。如下图所示:

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

; 实验记录以及实验过程中遇到的问题以及解决方案:

1.程序运行报错

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
tensorflow显示没有random_uniform模块
解决办法:tf2.0里改名字了,用 tf.random.uniform代替

; 2.程序运行报错

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
TensorFlow2.0版本运行程序报错
解决办法:
import tensorflow as tf

改为

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

tf.disable_v2_behavior():此函数可以在程序开始时调用(在创建张量、图形或其他结构之前,以及在初始化设备之前)。它将TensorFlow 1.x和2.x之间所有不同的全局行为切换为预定的1.x行为,就是屏蔽2.x版本。

3.格式报错

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
先查看tensorboard安装位置,笔者使用的是Anaconda3,可以在Anaconda3下的搜索tensorflow,寻找其下Scripts文件下查找有没有tensorboard.exe文件,如果存在的话那就是没有配置tensorboard环境变量。

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
路径中不能有空格,只需删除即可。
[En]

There can be no spaces in the path, just delete it.

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

; 4.页面报错

进入 http://localhost:6006会报错

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
把主机的用户名修改为 localhost (Win10系统主机用户名修改(修改后需要重启电脑),还是报错,(这种方法不仅没有用,还会导致后续连不上网,不建议读者使用,因为笔者使用过,此处仅作记录供借鉴)
用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
在pycharm中再次尝试:(关掉cmd命令行!!!据观察,如果你想要开启另外一个新的计算图,一定要把原来的cmd命令行窗口关闭,再重复上述步骤,不然打开的将依然是上一个计算图。)
在pycharm的菜单栏,选择View–Tool Windows–Terminal
然后执行:
 tensorboard --logdir=mytmp

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)
进入页面后,执行成功!
[En]

After entering the page, the execution is successful!

用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

keras安装(参考)

1.打开Anaconda prompt切换到有TensorFlow的环境下:

conda activate tf2

2.安装keras前先依次执行以下两个命令:

conda install mingw libpython
pip install theano

3.最后执行安装keras的命令:
注意:keras一定要和你的TensorFlow版本匹配,因为我安装的TensorFlow是2.0.0版本的,keras2.3.1是与之匹配的

pip install keras==2.3.1

Original: https://blog.csdn.net/a208944725/article/details/124323968
Author: 吃鱼从来不吐刺
Title: 用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/496777/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球