文档章节

TensorFlow的第一个程序

孟飞阳
 孟飞阳
发布于 2017/07/09 10:30
字数 621
阅读 80
收藏 0

最近,因为项目需要开始接触机器学习。虽然在学校对神经网络等算法已有接触,但早已忘得差不多了。在学习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相仿,还是很方便的。

 

本文转载自:http://blog.csdn.net/goldenhawking/article/details/74414484

孟飞阳
粉丝 217
博文 1057
码字总数 566384
作品 5
朝阳
个人站长
私信 提问
TensorFlow 1.2.1 发布,更新 markdown 版本要求

TensorFlow 1.2.1 已发布,TensorFlow 是谷歌基于 DistBelief 进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着 N 维数组,Flow(流)意味着基于数据流...

王练
2017/07/03
4.2K
2
斯坦福tensorflow教程(二) tensorflow相关运算

1.认识下TensorBoard TensorFlow不仅是一个软件库,而是一整套包括TensorFlow、TensorBoard、Tensor Serving在内的软件包。为了更大程度地利用TensorFlow,我们应该了解如何将它们串联起来应...

致Great
2018/05/09
0
0
tensorflow入门---第三章

tensorflow程序分为两个阶段: 第一个阶段:定义计算图所有的计算 第二个阶段:执行计算 第一节:计算模型—–计算图 第二节:数据模型—–张量 第三节:运行模型—–会话 第一节:计算图 计...

cttacm
2018/05/05
0
0
Keras 将被添加到谷歌 TensorFlow 成为默认 API

Keras的作者、谷歌AI研究员Francois Chollet宣布了一条激动人心的消息:Keras将会成为第一个被添加到TensorFlow核心中的高级别框架,这将会让Keras变成Tensorflow的默认API。 在Reddit的一条...

两味真火
2017/01/17
10.2K
2
英语不行?你可以试试TensorFlow官方中文版教程

机器之心编辑,参与:思源。 现在 TensorFlow 有官方中文版教程啦,以前的英文版 Tutorials 有了对应的中文翻译。各位还在 TensorFlow 门前徘徊的开发者们,现在可以对着中文教程学习各种流行...

机器之心
2018/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
28分钟前
4
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
7
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部