Merge pull request #211 from SuperWayLiu/master
修改对于initializer和variable的描述,增加实战代码。
This commit is contained in:
commit
9ae4be25f4
|
|
@ -209,11 +209,34 @@ with tf.Session() as sess:
|
|||
|
||||
#### 2. variable
|
||||
|
||||
  在对机器学习模型进行训练时,我们需要不断调整模型的状态,这个状态就由variable来保存。创建variable时我们需要给一个初始值。
|
||||
  无论是传统的机器学习算法,例如线性支持向量机(Support Vector Machine, SVM),其数学模型为y = <w,x> + b,还是更先进的深度学习算法,例如卷积神经网络(Convolutional Neural Network, CNN)单个神经元输出的模型y = w*x + b。可以看到,w和b就是我们要求的模型,模型的求解是通过优化算法(对于SVM,使用
|
||||
SMO[1]算法,对于CNN,一般基于梯度下降法)来一步一步更新w和b的值直到满足停止条件。因此,大多数机器学习的模型中的w和b实际上是以变量的形式出现在代码中的,这就要求我们在代码中定义模型变量。
|
||||
|
||||
```
|
||||
import tensorflow as tf
|
||||
a = tf.Variable(2.)
|
||||
b = tf.Variable(3.)
|
||||
with tf.Session() as sess:
|
||||
sess.run(tf.global_variables_initializer()) #变量初始化
|
||||
print(sess.run(a*b))
|
||||
[out]:6.
|
||||
```
|
||||
|
||||
[1] Platt, John. "Sequential minimal optimization: A fast algorithm for training support vector machines." (1998).
|
||||
|
||||
#### 3. initializer
|
||||
|
||||
  每次启动图都需要初始化变量,虽然在创建变量时指定了初始值,但我们还是需要先运行一下初始化节点。使用未初始化的节点进行计算会产生异常。
|
||||
  由于tensorflow构建的是静态的计算流图,在开启会话之前,所有的操作都不会被执行。因此为了执行在计算图中所构建的赋值初始化计算节点,需要在开启会话之后,在会话环境下运行初始化。如果计算图中定义了变量,而会话环境下为执行初始化命令,则程序报错,代码如下:
|
||||
|
||||
```
|
||||
import tensorflow as tf
|
||||
a = tf.Variable(2.)
|
||||
b = tf.Variable(3.)
|
||||
with tf.Session() as sess:
|
||||
#sess.run(tf.global_variables_initializer()) #注释掉初始化命令
|
||||
print(sess.run(a*b))
|
||||
[Error]: Attempting to use uninitialized value Variable
|
||||
```
|
||||
|
||||
### 2.启动图
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue