tensorflow是一个功能强大的深度学习包,其内部包含了丰富的机器学习算法。
本文提供一个简单的例子来示范tensorflow的基本使用以及tf内部自带的梯度下降法。
首先,我们导入包
import tensorflow as tf
import numpy as np
使用numpy生成100个随机数,并用这100个随机数构造一个简单的线性模型
x_data = np.random.rand(100)
y_data = x_data*0.1 + 0.2
随后,我们用上面随机生成的数据构造一个线性模型
b = tf.Variable(0.)
k = tf.Variable(0.)
y = k*x_data + b
这里的y相当于是预测值,随后,我们计算y的真实值(y_data)与预测值(y)之间平方差来定义一个二次代价函数
loss = tf.reduce_mean(tf.square(y_data - y))
使用tf内部自带的方法定义一个梯度下降法来进行训练的优化器,这里的0.2表示学习率
optimizer = tf.train.GradientDescentOptimizer(0.2)
最小化代价函数
train = optimizer.minimize(loss)
由于一开始我们使用tf定义了一些变量,这里我们将这些变量初始化。
init = tf.global_variables_initializer()
开启一个session来运行tensorflow,进行模型预测
with tf.Session() as sess:
sess.run(init)
for setp in range(201):
sess.run(train)
# 间隔20步打印一次k,b的值
if setp % 20 ==0:
print(setp, sess.run([k, b]))
得到下面的这个结果,这里我们可以看到,当程序运行到20步的时候,k与b的值已经非常接近真实值k=0.1,b=0.2
使用纯代码实现梯度下降法还是有点麻烦的,tf内集成了梯度下降法与丰富多样的损失函数,减少了代码量,可以让研究者更多的关注到网络本身。
发表回复