tensorflow 学习笔记之 变量的一些操作
来源:互联网 发布:邻里中国网php面试题 编辑:程序博客网 时间:2024/05/29 02:37
部分内容参考了其他资源,谢谢。
1、 区别
使用tf.Variable()时,如果系统检测到重名,会做自动处理,不会报错。
import tensorflow as tfw_1 = tf.Variable(3,name="w")w_2 = tf.Variable(1,name="w")print(w_1.name)print(w_2.name)
运行结果:
使用tf.get-variable()时,会报错。
import tensorflow as tfw_1 = tf.get_variable(name = 'w', initializer = 1)w_2 = tf.get_variable(name = 'w', initializer = 2)print(w_1.name)print(w_2.name)
2、tensorflow 赋值操作
若需要给TensorFlow的变量赋值,可以使用 tf.assign()
tf.assign(ref, value, validate_shape=None, use_locking=None, name=None)
将值赋值给 ref 后再返回 ref
import tensorflow as tf;A = tf.Variable(tf.constant(0.0), dtype=tf.float32)with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(A)) sess.run(tf.assign(A, 10)) print(sess.run(A))
运行结果如下:
执行session会话后,A的值一开始为0.0,随后执行assign操作,变成10。
3、TensorFlow创建变量
import tensorflow as tfweights = tf.Variable(tf.random_normal([784,200], stddev = 0.35), name = 'weights')bias = tf.Variable(tf.zeros([200]), name = 'biase')with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run(bias)) print(weights.eval())
上面的代码中sess.run(bias) 与 bias.eval() 是一样的。
如果直接用 print(weights) ,则打印的结果是 weight 的 shape ,
4、tf.placeholder()
只是一个占位符,占位符并没有初始值,只是在必要时分配内存,
在TensorFlow中,数据并不会保存为 integer, float, 或 string. 这些值都封装在 tensor 对象中,因此不能直接定义并使用一个变量例如x,因为你设计的模型可能需要受不同的数据集与不同的参数。所以TF使用placeholder()来传递一个tensor到session.run()中,并与feed_dict{}结合一起使用。
feed_dict{}是一个字典,在字典中需要给每一个用到的占位符取值。在训练神经网络时,需要大批量的训练样,如果每一次迭代选取的数据都需要常量表示,那么TensorFlow的计算图会非常大。因为每计算一个常量 ,TensorFlow会增加一个结点,所以说,拥有几百万次迭代的神经网络会拥有庞大的计算图,如果使用占位符的话,就可以很好的解决这一点,它只会拥有占位符这一个结点。
import tensorflow as tfimport numpy as npx = tf.placeholder(tf.string)init = tf.global_variables_initializer()with tf.Session() as sess: sess.run(init) output = sess.run(x, feed_dict={x: 'Hello World'}) print(output)
import tensorflow as tfimport numpy as npw1=tf.Variable(tf.random_normal([1,2],stddev=1,seed=1))#因为需要重复输入x,而每建一个x就会生成一个结点,计算图的效率会低。所以使用占位符x=tf.placeholder(tf.float32,shape=(1,2))x1=tf.constant([[0.7,0.9]])a=x+w1b=x1+w1sess=tf.Session()sess.run(tf.global_variables_initializer())#运行y时将占位符填上,feed_dict为字典,变量名不可变y_1=sess.run(a,feed_dict={x:[[0.7,0.9]]})y_2=sess.run(b)print(sess.run(w1))print(y_1)print(y_2)sess.close
- tensorflow 学习笔记之 变量的一些操作
- TensorFlow入门之变量操作
- TensorFlow学习笔记(二):变量
- Tensorflow学习笔记-变量管理
- Tensorflow 学习笔记之 共享变量(Sharing Variables)
- TensorFlow笔记之变量管理
- TensorFlow学习笔记之三——适合入门的一些资源
- TensorFlow学习笔记(六)Variable变量
- tensorflow学习笔记之word2vec
- Tensorflow深度学习之十四:Tensorflow变量管理
- TensorFlow 基础知识笔记之一些概念
- tensorflow学习笔记(十四):tensorlfow操作gradient
- TensorFlow学习笔记(七)feeds操作
- TensorFlow学习笔记(八)add_layer操作
- TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作
- TensorFlow学习笔记--TensorFlow简介,常用基本操作
- 深度学习笔记之win7下TensorFlow的安装
- 深度学习笔记之win7下TensorFlow的安装
- linux中设定系统延时任务及定时任务
- 老鼠试药问题
- 前端学习第六弹:制作一个简易导航
- [JZOJ2393]【ZJOI2011】营救皮卡丘
- shiro cookie
- tensorflow 学习笔记之 变量的一些操作
- HDU
- 第10周项目实践 线索二叉树的建立及遍历
- Hbase命令
- SpringMVC(1)----@RequestParam和@PathVariable用法小结
- jqwidgets 国际化- 中文 jqxGrid 中文语言包 gridlocalization
- Android知识点(一)
- Spring cloud系列七 为@Feign中集成的Ribbon进行个性化配置
- Codeforces Round #440 B. Maximum of Maximums of Minimums-【思维】