— 来自莫烦Python
计算图纸
Tensorflow 首先要定义神经网络的结构, 然后再把数据放入结构当中去运算和 training

因为TensorFlow是采用数据流图
dataflowgraphs来计算, 所以首先我们得创建一个数
据流流图, 然后再将我们的数据(数据以张量tensor的形式存在)放在数据流图中计算. 节点Nodes在图中表示数学操作,图中的线edges则表示在节点间相互联系的多维数据数组, 即张
量tensor. 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是
TensorFlow名字的由来.
Tensor张量意义
张量(
Tensor):
- 张量有多种,零阶张量为
纯量或标量(scalar) 也就是一个数值.比如[1]- 一阶张量为
向量(vector), 比如 一维的[1, 2, 3]- 二阶张量为
矩阵(matrix), 比如 二维的[[1, 2, 3],[4, 5, 6],[7, 8, 9]]- 以此类推, 还有三阶,三维的 …
GradientDecent例子
Tensorflow 是非常重视结构的, 我们得建立好了神经网络的结构, 才能将数字放进去, 运行这个结构.
创建数据
首先, 我们这次需要加载
tensorflow和numpy两个模块, 并且使用numpy来创建我们的数据.
1 | import tensorflow as tf |
其中, 我们用
tf.Variable来创建描述y的参数. 我们可以把y_data = x_data*0.1 + 0.3想象成y=Weights * x + biases, 然后神经网络也就是学着把Weights变成0.1,biases变成0.3.
搭建模型
1 | Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) |
计算误差
接着就是计算
y和y_data的误差:
1 | loss = tf.reduce_mean(tf.square(y-y_data)) |
传播误差
反向传递误差的工作就教给
optimizer了, 我们使用的误差传递方法是梯度下降法:Gradient Descent让后我们使用optimizer来进行参数的更新.
1 | optimizer = tf.train.GradientDescentOptimizer(0.5) |
训练
到目前为止, 我们只是建立了神经网络的结构, 还没有使用这个结构. 在使用这个结构之前, 我们必须先初始化所有之前定义的
Variable, 所以这一步是很重要的!
1 | # init = tf.initialize_all_variables() # tf 马上就要废弃这种写法 |
接着,我们再创建会话
Session. 我们会在下一节中详细讲解 Session. 我们用Session来执行init初始化步骤. 并且, 用Session来run每一次 training 的数据. 逐步提升神经网络的预测准确性.
1 | sess = tf.Session() |
运行结果如图:
Placeholder 传入值
placeholder是 Tensorflow 中的占位符,暂时储存变量类似形参,规定类型而外部传值
Tensorflow 如果想要从外部传入data, 那就需要用到
tf.placeholder(), 然后以这种形式传输数据sess.run(***, feed_dict={input: **})
1 | import tensorflow as tf |
接下来, 传值的工作交给了
sess.run(), 需要传入的值放在了feed_dict={}并一一对应每一个input.placeholder与feed_dict={}是绑定在一起出现的
1 | with tf.Session() as sess: |
