实验目的:1、了解python在深度学习领域的应用
2、学习安装python第三方依赖库
实验环境:已正确安装python3.5以及依赖库tensorflow、matplotlib
预测过程展示:
1、应用领域
python是一种高级面向对象的动态类型语言,具有开发高效,学习简单的特点,主要应用于大数据、深度学习、机器学习、以及Web开发等领域,具有良好的发展前景。
2、依赖库的安装方法
(1)在线直接安装
在命令行模式下利用pip命令安装,命令格式:pip install XXX,如:
pip install tensorflow#安装tensorflow第三方依赖库
pip install matplotlib#安装matplotlib第三方依赖库
(2)离线安装
离线安装适用于网络较差时,可以在https://pypi.org/处搜索下载安装包,然后在命令 行切换到安装包目录利用pip命令安装。
3、原始数据准备
在训练深度学习模型之前必须转备好训练数据,本文以y=2x为训练目标进行实验:
import numpy as np #导入数值计算模块
import matplotlib.pyplot as plt#导入画图模块
#准备数据
train_x=np.linspace(-1,1,100)#生成1*100的数组
train_y=2*train_x+np.random.randn(*train_x.shape)*0.5#生成训练数据时加入了噪声
#数据以图片展示
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.scatter(train_x,train_y)
ax.plot(train_x,train_y,'r*',label='Original Data')
plt.legend()
plt.ion()
plt.show()
编辑好以上代码后,运行生成的结果如图
4、搭建训练模型
搭建训练模型是深度学习比较重要的一个环节,简单的说它是一个运算规则,本文以一个神经元为例搭建计算模型。
X=tf.placeholder("float")#定义占位符,作用:输入训练值
Y=tf.placeholder("float")#定义占位符,作用:输入标准值
W=tf.Variable(tf.random_normal([1]),name="weight")#定义权重
b=tf.Variable(tf.zeros([1]),name="bias")#定义偏执,类似于噪声
z=tf.multiply(X,W)+b#定义计算结构之前向结构
在定义好计算结构之后,需要定义优化规则
cost=tf.reduce_mean(tf.square(Y-z))#定义以训练值与预测值的均方根误差为评判准则
learn_rate=0.01#定义学习率
optimizer=tf.train.GradientDescentOptimizer(learn_rate).minimize(cost)#定义训练方法(以梯度下降的方法进行训练,以误差:cost达到最小为目标)
5、模型训练
上一步骤就类似于画出了计算规则的蓝图,但是其并未进行运算,需要初始化变量、定义会话并在会话中利用run()方法启动图的运算,这也是tensorflow的一个特点
init=tf.global_variables_initializer()#定义初始化变量的对象
training_epochs=25#定义迭代训练次数
display_step=2#定义可视化步长
with tf.Session() as sess:#定义会话
sess.run(init)
for epoch in range(training_epochs):
for (x,y) in zip(train_x,train_y):
sess.run(optimizer,feed_dict={X:x,Y:y})
if epoch % display_step == 0:
loss = sess.run(cost,feed_dict={X:train_x,Y:train_y})
print("Epoch:",epoch+1,"cost=",loss,"W=",sess.run(W),"b=",sess.run(b))
#动态可视化定义
try:
ax.lines.remove(lines[0])#先抹除旧线再去画新线
except Exception:
pass
lines=ax.plot(train_x,train_x*sess.run(W)+sess.run(b),'b-',label='pridect Data')
plt.pause(8)
plt.legend()
预测结果图
预测过程参数输出