机器学习的一个例子 (平面拟合):通俗易懂的解释!
# 使用tensorflow 进行线性拟合 , py2 要加上 from __future__ import print_function
import tensorflow as tf
import numpy as np
# g构造数据
x = np.random.rand(2, 100)
x_data = np.float32(x)
# print(x_data.dtype)
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 构造了一系列数据,w = [0.100, 0.200], bias = 0.300
# x 为随机的二维数据,
# 构造线性模型
# 所谓的构建模型也就是将将整个算法的计算过程流程走一遍,
# 然后得到模型的度量标准,不断的通过优化器调整参数,计算损失
# 最终,合理的损失范围内模型也就训练完成
# 这里是模型一个线性函数的计算过程,也即实现了一个线性模型
# 定义参数
b = tf.Variable(np.float32(np.zeros([1]))) # 定义的模型参数, np.zeros 返回的是一个一维的数组
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0)) # 定义权重,假设猜测的是一个有两个维度的权重
# 定义模型
y = tf.matmul(W, x_data) + b
# 很简单
# 接下来就是机器学习中的 tensorflow 中的一些通用内容了
##############################################################
# 跳过这些内容向下
# 定义损失,通过优化器,在不断的进行训练的过程中,不断的最小化损失,以达到训练的目的
# 这也是机器学习的核心思想内容
loss = tf.reduce_mean(tf.square(y - y_data))
optim = tf.train.GradientDescentOptimizer(learning_rate=0.5) # 这里使用梯度下降优化器,使用的是梯度下降算法
train = optim.minimize(loss)
# 这个train 就是不断训练的内容,也就是训练的目标
# 跳过这些内容向下
##############################################################
# 首先是对进入图中的变量进行初始化
init = tf.initialize_all_variables() # 这里还没有进行初始化,tensorflow 的特性就是,‘先定义,再运行’
# 通过会话启动图
sess = tf.Session()
sess.run(init)
# 进行训练,也就是拟合平面
# 在这之前,重要的是,有一个不断优化的优化器,
# 也就是训练的内容或者称之为目标, 看上面
# 训练步骤
# 根据需要进行一些其他的操作
for step in range(0, 201):
sess.run(train)
if step % 20 == 0:
print (step, sess.run(W), sess.run(b))
# 注意,用tensorflow 定义的一些变量被称为tensor 要获取里面的值,需要sess run it, 关于如何理解tensor 见后面链接
结果:还不错
0 [[-0.16681269 0.64336747]] [0.4092061]
20 [[0.04630245 0.28359345]] [0.28674883] 40 [[0.09200455 0.21912442]] [0.29482135] 60 [[0.09903586 0.2045702 ]] [0.29828864] 80 [[0.09996049 0.20113516]] [0.29947484] 100 [[0.1000305 0.20029102]] [0.299845] 120 [[0.10001602 0.20007646]] [0.29995528] 140 [[0.10000583 0.20002046]] [0.29998726] 160 [[0.10000186 0.20000553]] [0.2999964] 180 [[0.10000056 0.20000148]] [0.299999] 200 [[0.10000016 0.20000039]] [0.2999997]
机器学习,就是通过让机器根据一些算法加数据探索一个未知的模型。
模型就是一些函数的组合加上适用于某一领域的庞大参数集。
最终,让机器也能像人一样 根据这些函数和参数作出决策或推理结果!
算是对近期的一个总结~~
tensor: 什么是tensor ? 怎么简单高效理解tensor