(一)引 言
在开始更加复杂的机器学习模型实践之前,我们先来做一个有趣的小项目来放松放松心情,这个项目的主角是TensorFlow的优化器,我们知道优化器是一种通过渐变来最小化函数的算法,今天我们就使用它来寻找以下函数的最小值。
(二)问题分析
首先使用Matplotlib画出函数的图像:
从图中我们可以看到,函数的最小值在**[-0.5, 0]**内,我们的目标是要找到函数的最小值,即优化目标为通过调整参数x, 使 f(x) 最小,下面我们使用TensorFlow来解决这个问题。
(三)模型构建
首先,构建我们需要最小化的函数:
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
# 让x从初始值2开始变化
x = tf.Variable(2.0)
x1 = tf.multiply(tf.pow(x, 2), 3) # 3x^2
x2 = tf.multiply(tf.pow(x, 4), 2) # 2x^4
x3 = tf.multiply(tf.pow(x, 6), 1) # x^6
# 构建函数
y = x1 + x2 + x3 + x + 1
# 学习率为0.1,目标是使y最小
train_op = tf.train.AdamOptimizer(0.1).minimize(y)
# 定义会话,训练10000次
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(10000):
sess.run(train_op)
print("The minimum point is " % x.eval(sess))
print("The minimum is " % sess.run(y))
# 输出:
The minimum point is -0.160995
The minimum is 0.918124
经过10000次迭代后,得到近似最小值点(-0.160995, 0.918124),观察之前的函数图像:
由图可知,我们求得了一个相当不错的近似最小值点,在实际应用中这个数值已经达到了可以使用的精度。
(四)总 结
在这一节当中,我们使用了TensorFlow的优化器来求取函数的最小值点,属于对TensorFlow使用方法的进一步拓展,之后我也会更新一些有趣的拓展使用方法,敬请期待,有任何的疑问可以在评论区留言,我会尽快回复,谢谢支持!
下一节:TensorFlow实践(9)——普通BP神经网络