[关键词]1.皮顿2.张量流3.机器学习[场景定义]假设一些样本数据和正确的结果,人为加入一些噪声数据(偏差数据),提供给TensorFlow进行机器学习,看看机器学习效果如何,通过实验了解
[关键词]
1.皮顿
2.张量流
3.机器学习
[场景定义]
假设一些样本数据和正确的结果,人为加入一些噪声数据(偏差数据),提供给TensorFlow进行机器学习,看看机器学习效果如何,通过实验了解机器学习。
1)样本数据模型:f(x)= ax ^ 2+bx+c,即抛物线。当然,模型可以任意定义。
2)噪声数据:y = f(x)+随机数,随机数作为偏差值生成噪声数据。
3)输入输出:输入数据X和输出数据Y都是显式的一维数据,是最简单的模型。值:x=[0,300],得到的Y就是输出数据。
将张量流作为tf导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
导入操作系统
OS . environ[‘TF _ CPP _ MIN _ LOG _ LEVEL & # 8217] = ‘2’
#生成样本数据和图形
numdots=300
输入数据=[]
对于范围内的I(num dots):
x=np.random.normal(0.8,10)
y = 0.3 * x * x-0.2 * x+0.5+NP . random . normal(0,6)
输入数据.追加([x,y])
x _ data =[输入数据中v的v[0]
y _ data =[输入数据中v的v[1]
[神经网络]
为了基于Tesonflow构建神经网络,使用了几种常见的神经网络方法:
1)array . shape():生成矩阵
2)占位符:增加一个计算占位符节点相当于定义一个参数,需要理解清楚。
x = TF . placeholder(dtype = TF . float 32,shape=[144,10],name = & # 8217X & # 8217)
参数描述
Dtype:数据类型,必选,默认数据类型为value,传入的参数为tensorflow下的枚举值(float32,float64 & # 8230…。)
形状:数据形状;可选;如果留空,它将随着输入数据的形状而变化;您可以在多个调用中输入不同形状的数据。
名称:常量名称,可选,默认值不重复,根据创建顺序(Placeholder,Placeholder_1,Placeholder _ 2 & # 8230…。)
3)变量:变量字段,相当于设置了一个变量。
4)relu:整流线性单元,relu),也称修正线性单元。
5)matmul:将矩阵A乘以矩阵B,生成a * B。
6)reduce_mean:计算张量张量沿指定数轴(张量的一维)的平均值,主要用于降维或计算张量(图像)的平均值。
7)GradientDescentOptimizer:实现梯度下降算法的优化器类,用于构造新的梯度下降优化器实例。
#建立神经网络模型
x_data=np.array([x_data])。整形(-1,1)
y_data=np.array([y_data])。整形(-1,1)
x _ h = TF . placeholder(dtype = TF . float 64,shape=[None,1],name = & # 8221xh & # 8221)
y _ h = TF . placeholder(dtype = TF . float 64,shape=[None,1],name = & # 8221yh & # 8221)
w=tf。变量(np.random.normal(0,0.3,size=[1,20]),dtype=tf.float64)
b=tf。变量(np.random.normal(0.0,0.5,size=[20]),dtype=tf.float64)
y0=tf.nn.relu(tf.matmul(x_h,w)+b)
w1=tf。变量(np.random.normal(0,0.5,size=[20,1]),dtype=tf.float64)
b1=tf。变量(np.random.normal(0,0.8,size=[1]),dtype=tf.float64)
y=(tf.matmul(y0,w1)+b1)
los = TF . reduce _ mean((TF . square(y-y _ h)))
tran = TF . train . gradientdescentoptimizer(0.001)。最小化
[机器培训]
训练主要在session中交互,session具有管理CPU/GPU计算和网络连接的能力,相当于一个上下文。使用的参数有:
1) Session:作为会话,1)Session的主要功能:Session指定操作对象的执行环境。session类的构造函数有三个可选参数。
Target(可选):指定连接的执行引擎,它主要用于分布式场景。
Graph(可选):在会话对象中指定要参与计算的图形。
Config(可选):辅助配置会话对象所需的参数(限制CPU或GPU的数量,设置优化参数,设置日志选项等。).
2)global_variables_initializer:返回一个用来初始化计算图中所有全局变量的op。通常作为sess . run(TF . global _ variables _ initializer())启动计算所需的数据流图。
3)session.run:执行计算,参数为:run(op,data),如:
将张量流作为tf导入
a = tf.add(1,2)
#定义一个op运算,等于1+2 = 3。
b = tf.multiply(a,2)
#定义了乘法运算,a*2
session = tf。会话()
v1 =会话.运行(b)
打印(v1)
# v1=(1+2) * 2 =6
replace_dict = {a:20}
# a被重新定义为常数20。
v2 = session.run(b,feed_dict = replace_dict)
打印(v2)
# V2= 20 *2 = 40
如果模型合理,训练次数越高,拟合结果就越准确。本文是一个清晰的抛物线模型,所以训练结果可以很好的回归。
[使用培训结果]
训练结束后,在同样的背景下,可以用训练结果来看学习效果。
#用神经网络计算X上所有点的Y值,画图表,看效果。
testx=np.linspace(-30,30,60,dtype=np.float32)。整形(-1,1)
testy=sess.run(y,feed_dict={x_h:testx})
#plt.scatter(testx,testy)
plt.scatter(x_data,y_data)
plt.plot(testx,testy)
plt.show()
上面的代码可以直接运行,结果是:
蓝点:带噪声的样本数据。
曲线:训练结束后,根据训练结果计算出的数据与去噪后的样本模型非常接近。