关闭

机器学习小试(1)TensorFlow的第一个程序

标签: 机器学习算法预测
769人阅读 评论(2) 收藏 举报
分类:

最近,因为项目需要开始接触机器学习。虽然在学校对神经网络等算法已有接触,但早已忘得差不多了。在学习TF之前,建议和我一样,先从理论背景开始看起。我随便搜索到这个视频教程,很全面:
http://mooc.guokr.com/note/16274/

一些概念

  1. 对数据进行预测/分类的算法很多,如线性回归/逻辑回归,神经网络模型只是其中的一种。
  2. TensorFlow(TF)是一个计算工具,与Numpy等Python库配合,可以进行复杂的科学计算。
  3. TF把计算工作分为准备/执行两个阶段。在准备阶段,涉及的矩阵、向量运算并不执行,而是将其执行关系变为“计划”存储起来。整体存储的计划有利于TF对其进行优化,自动分配到CPU与GPU上工作。
  4. 在准备阶段,只要使用了TF已经提供的各类核函数原型,就可让系统自动计算反向传播所需的偏微分、规划加权训练算法。这一步非常方便,使得代码中不再需要人工返回代价函数、代价函数的偏微分。

第一个线性回归程序

我们来实现一个含有128个特征的线性回归模型:

from __future__ import print_function
import tensorflow as tf
import numpy as np
n = 128;      # features
m = 10240;    # data  sets
#generate a m x n training input data
x_raw = np.random.rand(m,n)
#extension mat with a 1 column , standing for constant theta0
ones  = np.ones([m,1])
x_data = np.column_stack([ones,x_raw])
#generate random thetas
theta = np.random.rand(n+1,1);
theta = theta * 2 - 1;
#calc the y for each training sets
y_data = np.matmul(x_data, theta);
print ("theta = ",theta.T,"'\n")


### create tensorflow structure start
Weights = tf.Variable(np.random.rand(n+1,1).astype(np.float64))
y = tf.matmul(x_data, Weights);
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
### create tensorflow structure end ###

sess = tf.Session()
sess.run(init)          # Very important

for step in range(10000):
    sess.run(train)
    if step % 1000 == 0:
        print(step, sess.run(loss),sess.run(tf.matrix_transpose(Weights)))

执行结果:

theta =  [[-0.80665497 -0.40706353 -0.37761216 ...,  0.65120158 -0.63642329
   0.57260276]] '

0 112.51848133 [[-0.49501238  0.43201934  0.00480166 ...,  0.11337306 -0.10528878
   0.52174486]]
1000 0.168146119232 [[-0.82618873 -0.27271341 -0.37158313 ...,  0.53085349 -0.55767108
   0.51410246]]
2000 0.00666182695066 [[-0.8286265  -0.37849185 -0.38191747 ...,  0.63142187 -0.62048383
   0.55830972]]
3000 0.000293393778021 [[-0.8282109  -0.40045689 -0.37905998 ...,  0.64834207 -0.63311107
   0.56955442]]
4000 1.50198864068e-05 [[-0.82729713 -0.40528635 -0.37776924 ...,  0.65103949 -0.63555686
   0.5722022 ]]
5000 1.69560505968e-06 [[-0.82632623 -0.40639715 -0.37741158 ...,  0.65142738 -0.63602249
   0.57279029]]
6000 9.33044122985e-07 [[-0.82538174 -0.40666756 -0.37733408 ...,  0.65146524 -0.63611686
   0.57290744]]
7000 8.13146604533e-07 [[-0.82447858 -0.40674281 -0.37732706 ...,  0.65145661 -0.63614405
   0.5729203 ]]
8000 7.34752335864e-07 [[-0.82361809 -0.40677164 -0.37733615 ...,  0.65144394 -0.63615934
   0.57291092]]
9000 6.65400707021e-07 [[-0.82279896 -0.40678893 -0.37734842 ...,  0.65143191 -0.63617228
   0.57289731]]

可以发现,对含有128个变量的线性回归问题,梯度下降10000次即可达到1e-7的收敛程度。代码量与Ocatve相仿,还是很方便的。

0
0
查看评论

机器学习基础之学习方式

机器学习基础-学习方式的概要介绍
  • cike0cop
  • cike0cop
  • 2017-11-02 21:18
  • 103

Spark MLlib机器学习之朴素贝叶斯小试牛刀

Spark MLlib机器学习之朴素贝叶斯小试牛刀废话不多说,直接上代码,以下代码均基于Scala实现。0. 机器学习工具类 BaseModelUtil.scalapackage com.jangz.recommendation.spark.mllibobject BaseModelUtil { ...
  • qq_17776287
  • qq_17776287
  • 2017-11-21 21:50
  • 131

入门机器学习的第一个程序!(python版)

使用scikit-learn库写的第一个python机器学习小程序。值得大家一看。
  • qq_28444159
  • qq_28444159
  • 2017-01-14 21:17
  • 2784

第一个Tensorflow程序

我们使用第一个Tensorflow程序类似于HelloWord
  • yaoming168
  • yaoming168
  • 2017-06-04 11:58
  • 682

第一个tensorflow小程序——异或门实现

代码:#author@chengxiaona import tensorflow as tf import numpy as np#输入训练数据,这里是python的list, 也可以定义为numpy的ndarray x_data = [[1., 0.], [0., 1.], [0., 0.], [...
  • chengxiaona
  • chengxiaona
  • 2017-10-15 16:32
  • 653

TensorFlow 教程 - 新手入门笔记

介绍TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他...
  • Toormi
  • Toormi
  • 2016-12-13 14:21
  • 45506

TensorFlow入门教程:1:安装和第一个例子程序

TensorFlow™ 是Google开源的一个采用数据流图用于数值计算的开源库。截止到目前为止在github上已经获得超过6万个Star,已经成为深度学习和机器学习方面最为受欢迎的项目,炙手可热。这篇文章介绍一下如何安装tensorflow并使用其写下第一个程序。
  • liumiaocn
  • liumiaocn
  • 2017-08-14 19:24
  • 2328

《机器学习有意思! 01》- 世界上最简单的机器学习入门

本文首发于https://jizhi.im/blog/post/ml_is_fun_01 你是否也曾听人们谈起机器学习但是只有一个朦胧的概念?你是否厌倦了在同事的高谈阔论中颓然欲睡?此诚求变之机。 本教程适合所有对机器学习感到好奇,却不知从何下手的读者。我想应该有很多人试着读了维基百科页...
  • lcy7289786
  • lcy7289786
  • 2017-04-03 13:01
  • 5843

TensorFlow入门:第一个机器学习Demo

本文主要通过一个简单的 Demo 介绍 TensorFlow 初级 API 的使用方法,引导刚接触 TensorFlow 或者 机器学习的同学,能够从第一步开始学习 TensorFlow。
  • geyunfei_
  • geyunfei_
  • 2017-12-13 20:10
  • 390

机器学习:如何在安卓上集成TensorFlow

我们都知道,谷歌有一个开源库叫做TensorFlow,可被用在安卓系统中实现机器学习。换言之,TensorFlow是谷歌为机器智能提供的一个开源软件库。
  • Gamay
  • Gamay
  • 2017-06-14 14:37
  • 1296
    个人资料
    • 访问:352572次
    • 积分:4838
    • 等级:
    • 排名:第7056名
    • 原创:99篇
    • 转载:3篇
    • 译文:0篇
    • 评论:338条
    最新评论