TensorFlow入门教程(2)占位符、变量、损失函数
2017-12-10 12:10
260 查看
接上文“TensorFlow入门教程(1)安装、基础、Tensorboard”
占位符(placeholders)
官网教程称之前的例子不够interesting,因为只产生固定的结果。一个计算图应该被参数化来接受输入,这就是占位符,占位符告诉程序,它占的这个位置,之后会有输入进来,用tf.placeholder()实现。
码一下代码,学习一下流程:
“+”等同于tf.add
结果如下:
我们可以通过加入其它操作来充实计算图。
结果为:
变量(Variable)
为了让模型可以训练,我们需要让模型能在相同输入时给出不同输出,我们可以通过使用Variables给计算图加入可训练的参数。跟着官网教程走一遍,用tf.Variable()创建变量。
结果为:
官网对tf.global_variables_initializer()的解释是当用tf.Variable()时没有初始化变量,所以需要它来初始化变量,我尝试了将这两句去掉,结果如下:
提示使用未初始化的变量值。
损失函数(loss function)
现在虽然我们已经创建了一个模型,但是我们不知道模型好不好。为了用数据集评估模型,我们需要一个占位符来规定需要的值还需要一个损失函数(loss function)。
变量再赋值
我们可以通过给W、b再分配值来改进模型。一个变量的初始值由tf.Variable提供,但可以用tf.assign来改变:
最终计算图如下:
输出为:
我们手动找到了让损失函数最小的参数,但是机器学习的要点是自动得出最佳的参数,这些将在之后学习。
还有TensorFlow入门教程(3)
占位符(placeholders)
官网教程称之前的例子不够interesting,因为只产生固定的结果。一个计算图应该被参数化来接受输入,这就是占位符,占位符告诉程序,它占的这个位置,之后会有输入进来,用tf.placeholder()实现。
码一下代码,学习一下流程:
import tensorflow as tf sess=tf.Session() a=tf.placeholder(tf.float32) b=tf.placeholder(tf.float32) adder_node=a+b print(sess.run(adder_node,{a:30,b:4.5})) print(sess.run(adder_node,{a:[1,2],b:[2,4.5]})) writer = tf.summary.FileWriter('D:/ten', tf.get_default_graph()) writer.close()
“+”等同于tf.add
结果如下:
34.5 [ 3. 6.5]
我们可以通过加入其它操作来充实计算图。
add_and_triple=adder_node*6.5 print(sess.run(add_and_triple,{a:30,b:4.5}))
结果为:
224.25
变量(Variable)
为了让模型可以训练,我们需要让模型能在相同输入时给出不同输出,我们可以通过使用Variables给计算图加入可训练的参数。跟着官网教程走一遍,用tf.Variable()创建变量。
import tensorflow as tf sess = tf.Session() W = tf.Variable([.3],dtype=tf.float32) b = tf.Variable([-.3],dtype=tf.float32) x = tf.placeholder(tf.float32) linear_model = W*x+b init=tf.global_variables_initializer() sess.run(init) print(sess.run(linear_model,{x:[1,2,3,4]}))
结果为:
[ 0. 0.30000001 0.60000002 0.90000004]
官网对tf.global_variables_initializer()的解释是当用tf.Variable()时没有初始化变量,所以需要它来初始化变量,我尝试了将这两句去掉,结果如下:
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable [[Node: Variable/read = Identity[T=DT_FLOAT, _class=["loc:@Variable"], _device="/job:localhost/replica:0/task:0/device:CPU:0"](Variable)]]
提示使用未初始化的变量值。
损失函数(loss function)
现在虽然我们已经创建了一个模型,但是我们不知道模型好不好。为了用数据集评估模型,我们需要一个占位符来规定需要的值还需要一个损失函数(loss function)。
import tensorflow as tf sess = tf.Session() W = tf.Variable([.3],dtype=tf.float32) b = tf.Variable([-.3],dtype=tf.float32) x = tf.placeholder(tf.float32) linear_model = W*x+b init=tf.global_variables_initializer() sess.run(init) y = tf.placeholder(tf.float32) #占位符,用于输入想要得到的数据集 squared_deltas = tf.square(linear_model-y) #正确结果与模型结果差的平方 loss = tf.reduce_sum(squared_deltas) #所有差平方的和 print(sess.run(loss,{x:[1,2,3,4],y:[0,-1,-2,-3]})) #打印损失函数的值 writer = tf.summary.FileWriter('D:/ten', tf.get_default_graph()) writer.close()
变量再赋值
我们可以通过给W、b再分配值来改进模型。一个变量的初始值由tf.Variable提供,但可以用tf.assign来改变:
fixW = tf.assign(W,[-1.]) fixb = tf.assign(b,[1.]) sess.run([fixW,fixb]) print(sess.run(loss,{x:[1,2,3,4],y:[0,-1,-2,-3]}))
最终计算图如下:
输出为:
0.0
我们手动找到了让损失函数最小的参数,但是机器学习的要点是自动得出最佳的参数,这些将在之后学习。
还有TensorFlow入门教程(3)
相关文章推荐
- 真正从零开始,TensorFlow详细安装入门图文教程!
- JSP入门初级教程之预定义变量的使用
- 【TensorFlow深度学习框架教程二】Python一小时入门导学
- tensorflow新手必看,tensorflow入门教程,tensorflow示例代码
- 理解JavaScript的变量的入门教程
- TensorFlow入门教程集合
- Tensorflow入门----占位符、常量和Session
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径
- Tensorflow入门教程-1
- 机器学习-tensorflow入门教程一——基础内容
- TensorFlow下载安装&入门教程
- 真正从零开始,TensorFlow详细安装入门图文教程!
- 从零开始,TensorFlow详细安装入门图文教程!
- TensorFlow全新的数据读取方式:Dataset API入门教程
- TensorFlow全新的数据读取方式:Dataset API入门教程
- TensorFlow全新的数据读取方式:Dataset API入门教程
- TensorFlow人工智能引擎入门教程目录
- Shell入门教程:Shell变量
- PHP变量入门教程(1)基础
- ReportStudio入门教程(四十六) - 样式变量