概述
用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版本安装成功示意图:
4.之后若使用pycharm工具软件,不需要再安装TensorFlow,配置环境即可
二.利用TensorFlow进行线性回归实验
给定一批由 y = 3x + 2 生成的数据集(x, y),建立线性回归模型 h(x) = wx + b,预测出 w = 3 和 b = 2。
实验要求:
1 生成拟合的数据集
数据集只含有一个特征向量,注意误差项需要满足高斯分布。使用了numpy和matplotlib库。numpy是Python的一个开源数值科学计算库,可用来存储和处理大型矩阵。matplotlib 是 Python 的绘图库,它可与 numpy 一起使用,提供了一种有效的 MatLab 开源替代方案
其代码如下:
#首先导入3个库:
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#随机产生数据点100个,随机概率符合高斯分布(正态分布)
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
x_data = [v[0] for v in vectors_set]
#定义标签向量y
y_data = [v[1] for v in vectors_set]
#按[x_data,y_data]在X-Y坐标系中以打点方式显示,调用plt建立坐标系并将值打印输出
plt.scatter(x_data,y_data,c='b')
plt.show()
产生的数据分布如下所示:
2 构建线性回归的Graph
#利用TensorFlow随机产生w和b,为了图形显示需要,分别定义名称myw和myb
w = tf.Variable(tf.random_uniform([1],-1.,1.),name='myw')
b = tf.Variable(tf.zeros([1]),name='myb')
#根据随机产生的w和b,结合上面随机产生的特征向量x_data,经过计算得出预估值
y = w * x_data + b
#以预估值y和实际值y_data之间的均方差作为损失
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
#global_variables_initializer初始化Variable等变量
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#迭代20次train
for step in range(20):
sess.run(train)
print("w=", sess.run(w),"b=",sess.run(b),sess.run(loss))
#写入磁盘,提供tensorboard在浏览器中展示用
writer = tf.summary.FileWriter("./mytmp",sess.graph)
打印下w和b,损失值的变化情况,可以看到损失值从0.24降到0.0008.
4 绘制拟合曲线
plt.scatter(x_data,y_data,c='b')
plt.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
如图:
5 tensorboard展示神经网络的graph
在上面的程序设计中有代码:writer = tf.summary.FileWriter("./mytmp",sess.graph)
运行改代码后就可以将整个神经网络节点信息写入到./mytmp
目录下(该目录与前面建立的程序在一个目录)。在cmd中通过“cd 目录”切换到该目录下,输入“dir”命令显示该目录下刚才运行的日志文件,最后输入tensorboard --logdir=D:PyCharm2018.3.7workpaseeg001mytmp
,回车运行后出现显示信息,信息最后一行中出现“TensorBoard 2.0.2 at http://localhost:6006/ (Press CTRL+C to quit)
”,打开chrome浏览器,在浏览器地址栏中输入 http://localhost:6006
,就会展示刚才程序设计的神经网络的图形显示。如下图所示:
实验记录以及实验过程中遇到的问题以及解决方案:
1.程序运行报错
tensorflow显示没有random_uniform模块
解决办法:tf2.0里改名字了,用tf.random.uniform
代替
2.程序运行报错
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.格式报错
先查看tensorboard安装位置,笔者使用的是Anaconda3,可以在Anaconda3下的搜索tensorflow,寻找其下Scripts文件下查找有没有tensorboard.exe文件,如果存在的话那就是没有配置tensorboard环境变量。
这个好了之后又出现问题,
路径中不能有空格,删掉就好了
4.页面报错
进入http://localhost:6006
会报错
把主机的用户名修改为 localhost
(Win10系统主机用户名修改(修改后需要重启电脑),还是报错,(这种方法不仅没有用,还会导致后续连不上网,不建议读者使用,因为笔者使用过,此处仅作记录供借鉴)
在pycharm中再次尝试:(关掉cmd命令行!!!据观察,如果你想要开启另外一个新的计算图,一定要把原来的cmd命令行窗口关闭,再重复上述步骤,不然打开的将依然是上一个计算图。)
在pycharm的菜单栏,选择View–Tool Windows–Terminal
然后执行:
tensorboard --logdir=mytmp
进入页面之后,执行成功!!!
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
最后
以上就是愤怒电灯胆为你收集整理的用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)的全部内容,希望文章能够帮你解决用TensorFlow实现线性回归(包括过程中出现的问题及解决方法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复