TensorFlow入门(一)基本用法
原文链接:http://blog.csdn.net/jerr__y/article/details/52955148
refer to: http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/basic_usage.html
@author: huangyongye
@date: 2017-02-25
本例子主要是按照 tensorflow的中文文档来学习 tensorflow 的基本用法。按照文档说明,主要存在的一些问题:
- 1.就是 Session() 和 InteractiveSession() 的用法。后者用 Tensor.eval() 和 Operation.run() 来替代了 Session.run(). 其中更多的是用 Tensor.eval(),所有的表达式都可以看作是 Tensor.
- 2.另外,tf的表达式中所有的变量或者是常量都应该是 tf 的类型。
- 3.只要是声明了变量,就得用 sess.run(tf.global_variables_initializer()) 或者 x.initializer.run() 方法来初始化才能用。
例一:平面拟合
通过本例可以看到机器学习的一个通用过程:1.准备数据 -> 2.构造模型(设置求解目标函数) -> 3.求解模型
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
0 [[ 0.27467242 0.81889796]] [-0.13746099]
20 [[ 0.1619305 0.39317462]] [ 0.18206716]
40 [[ 0.11901411 0.25831661]] [ 0.2642329]
60 [[ 0.10580806 0.21761954]] [ 0.28916073]
80 [[ 0.10176832 0.20532639]] [ 0.29671678]
100 [[ 0.10053726 0.20161074]] [ 0.29900584]
120 [[ 0.100163 0.20048723]] [ 0.29969904]
140 [[ 0.10004941 0.20014738]] [ 0.29990891]
160 [[ 0.10001497 0.20004457]] [ 0.29997244]
180 [[ 0.10000452 0.20001349]] [ 0.29999167]
200 [[ 0.10000138 0.2000041 ]] [ 0.29999748]
例二:两个数求和
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
[15.0, 5.0]
<type 'list'>
<type 'numpy.float32'>
1.变量,常量
1.1 用 tensorflow 实现计数器,主要是设计了 在循环中调用加法实现计数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
0
1
2
3
1.2 用 tf 来实现对一组数求和,再计算平均
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
s_sum = 0.0
vec = [ 1. 2. 3. 4.]
h_sum = 1.0
h_sum = 3.0
h_sum = 6.0
h_sum = 10.0
the mean is 2.5
2. InteractiveSession() 的用法
InteractiveSession() 主要是避免 Session(会话)被一个变量持有
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
3.0
3.0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
1.0
3.0
1.2
2.1 怎样使用 tf.InteractiveSession() 来完成上面 1.2 中 求和 、平均 的操作呢?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
s_sum = 0.0
vec = [ 1. 2. 3. 4.]
vec = 1.0
h_sum = 1.0
h_sum = 3.0
h_sum = 6.0
h_sum = 10.0
3.使用feed来对变量赋值
这些需要用到feed来赋值的操作可以通过tf.placeholder()说明,以创建占位符。
下面的例子中可以看出 session.run([output], …) 和 session.run(output, …) 的区别。前者输出了 output 的类型等详细信息,后者只输出简单结果。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
[array([ 14.], dtype=float32)]
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
<type 'numpy.ndarray'>
[ 14.]
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
<type 'numpy.float32'>
14.0
- 1
- 2
- 1
- 2
[array([ 14., 3.], dtype=float32)]
- 1
- 2
- 1
- 2
[ 14. 3.]
-
顶
- 0